Commit 1804918c authored by xinglei's avatar xinglei

*)修改socket方法

parent 0820bba2
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.LoggerFactory;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.context.SpringContextHelper;
import java.io.*;
import java.net.Socket;
import java.util.Objects;
/**
* @Author: xl
......@@ -24,13 +32,12 @@ public class ClientHandler implements Runnable {
@Override
public void run() {
try {
log.info("Received message from client: ");
// 获取输入流和输出流
InputStream inputStream = socket.getInputStream();
// 处理客户端请求,逻辑写到这⬇⬇⬇⬇⬇⬇⬇
log.info("Received message from client: ");
// 处理客户端请求
log.info("收到客户端数据: ");
String path = this.upload2Maas(inputStream);
log.info("调用maas服务返回结果: {}", path);
// 关闭连接
socket.close();
} catch (IOException e) {
......@@ -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 {
requestInfoToSocketServer();
}
......
......@@ -23,7 +23,7 @@ public class SocketConfig {
private static final Logger log = LoggerFactory.getLogger(SocketConfig.class);
@Value("${socket.port}")
@Value("${amos.system.socket.port}")
private Integer port;
private static final ThreadPoolExecutor threadpool = new ThreadPoolExecutor(15, 15,
......@@ -41,10 +41,12 @@ public class SocketConfig {
ss = new ServerSocket(port);
log.info("socket端口在: 【{}】中开启并持续监听=====>", port);
while (Boolean.TRUE) {
Socket socket = ss.accept();
Socket clientSocket = ss.accept();
//设置流读取的超时时间,这里设置为10s。超时后自动断开连接
clientSocket.setSoTimeout(10000);
// 创建新线程处理连接
log.info("接收到客户端socket: {}", socket.getRemoteSocketAddress());
threadpool.execute(new ClientHandler(socket));
log.info("接收到客户端socket: {}", clientSocket.getRemoteSocketAddress());
threadpool.execute(new ClientHandler(clientSocket));
}
} catch (IOException 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