Commit 1804918c authored by xinglei's avatar xinglei

*)修改socket方法

parent 0820bba2
package com.yeejoin.amos.kgd.config; package com.yeejoin.amos.kgd.config;
import com.alibaba.fastjson.JSON;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.robot.AmosRequestContext;
import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.context.SpringContextHelper;
import java.io.*; import java.io.*;
import java.net.Socket; import java.net.Socket;
import java.util.Objects;
/** /**
* @Author: xl * @Author: xl
...@@ -24,13 +32,12 @@ public class ClientHandler implements Runnable { ...@@ -24,13 +32,12 @@ public class ClientHandler implements Runnable {
@Override @Override
public void run() { public void run() {
try { try {
log.info("Received message from client: ");
// 获取输入流和输出流 // 获取输入流和输出流
InputStream inputStream = socket.getInputStream(); InputStream inputStream = socket.getInputStream();
// 处理客户端请求,逻辑写到这⬇⬇⬇⬇⬇⬇⬇ // 处理客户端请求
log.info("收到客户端数据: ");
String path = this.upload2Maas(inputStream);
log.info("Received message from client: "); log.info("调用maas服务返回结果: {}", path);
// 关闭连接 // 关闭连接
socket.close(); socket.close();
} catch (IOException e) { } catch (IOException e) {
...@@ -38,6 +45,21 @@ public class ClientHandler implements Runnable { ...@@ -38,6 +45,21 @@ public class ClientHandler implements Runnable {
} }
} }
// 上传maas逻辑写到这⬇⬇⬇⬇⬇⬇⬇,然后把maas返回的资源路径返回,后续作为客户端的回传信息
private String upload2Maas(InputStream inputStream) {
AmosRequestContext robotAuthentication = SpringContextHelper.getBean(AmosRequestContext.class);
if (Objects.nonNull(robotAuthentication)) {
RequestContext.setAppKey(robotAuthentication.getAppKey());
RequestContext.setProduct(robotAuthentication.getProduct());
RequestContext.setToken(robotAuthentication.getToken());
}
// 测试案例,上传maas需要token,用机器人账户登录上传,此处修改为真实请求⬇⬇⬇⬇⬇⬇⬇
FeignClientResult<AgencyUserModel> getme = Privilege.agencyUserClient.getme();
System.out.println(JSON.toJSONString(getme));
return null;
}
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
requestInfoToSocketServer(); requestInfoToSocketServer();
} }
......
...@@ -23,7 +23,7 @@ public class SocketConfig { ...@@ -23,7 +23,7 @@ public class SocketConfig {
private static final Logger log = LoggerFactory.getLogger(SocketConfig.class); private static final Logger log = LoggerFactory.getLogger(SocketConfig.class);
@Value("${socket.port}") @Value("${amos.system.socket.port}")
private Integer port; private Integer port;
private static final ThreadPoolExecutor threadpool = new ThreadPoolExecutor(15, 15, private static final ThreadPoolExecutor threadpool = new ThreadPoolExecutor(15, 15,
...@@ -41,10 +41,12 @@ public class SocketConfig { ...@@ -41,10 +41,12 @@ public class SocketConfig {
ss = new ServerSocket(port); ss = new ServerSocket(port);
log.info("socket端口在: 【{}】中开启并持续监听=====>", port); log.info("socket端口在: 【{}】中开启并持续监听=====>", port);
while (Boolean.TRUE) { while (Boolean.TRUE) {
Socket socket = ss.accept(); Socket clientSocket = ss.accept();
//设置流读取的超时时间,这里设置为10s。超时后自动断开连接
clientSocket.setSoTimeout(10000);
// 创建新线程处理连接 // 创建新线程处理连接
log.info("接收到客户端socket: {}", socket.getRemoteSocketAddress()); log.info("接收到客户端socket: {}", clientSocket.getRemoteSocketAddress());
threadpool.execute(new ClientHandler(socket)); threadpool.execute(new ClientHandler(clientSocket));
} }
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment