加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – spring tcp socket,授权客户端并处理挂起的响应

发布时间:2020-12-15 01:46:34 所属栏目:大数据 来源:网络整理
导读:Spring框架也支持tcp连接,我编写下面的代码来设置一个简单的套接字服务器,我很困惑将下面的期货添加到我的套接字服务器: 根据唯一标识符(例如从客户端收到的客户端密钥,可能使用TCP Connection Events)授权客户端 直接向特定客户端发送消息(基于标识符) 广

Spring框架也支持tcp连接,我编写下面的代码来设置一个简单的套接字服务器,我很困惑将下面的期货添加到我的套接字服务器:

>根据唯一标识符(例如从客户端收到的客户端密钥,可能使用TCP Connection Events)授权客户端
>直接向特定客户端发送消息(基于标识符)
>广播消息

更新:

>添加Config.sendMessage以向单个客户端发送消息
> Config.broadCast添加到广播消息
> authorizeIncomingConnection授权客户端,接受或拒绝连接
>添加tcpConnections静态字段以保留tcpEvent源

问题!

>正在使用tcpConnections HashMap好主意?!
>是我实施好的授权方法吗?

Main.java

@SpringBootApplication
public class Main {

    public static void main(final String[] args) {
        SpringApplication.run(Main.class,args);
    }

}

Config.java

@EnableIntegration
@IntegrationComponentScan
@Configuration
public class Config implements ApplicationListener

MainController.java

@Controller
public class MainController {

    @RequestMapping("/notify/{connectionId}/{message}")
    @ResponseBody
    public String home(@PathVariable String connectionId,@PathVariable String message) {
        try {
            Config.sendMessage(connectionId,message);
            return "Client Notified !";
        } catch (Exception e) {
            return "Failed To Notify Client,cause : n " + e.toString();
        }
    }


    @RequestMapping("/broadCast/{message}")
    @ResponseBody
    public String home(@PathVariable String message) {
        return Config.broadCast(message);
    }

}

用法:

>套接字请求/响应模式
>通知单个客户

HTTP://本地主机:8080 /通知/ {的ConnectionId} / {消息}
> broadCast

HTTP://本地主机:8080 /广播/消息{}

最佳答案
TcpConnectionOpenEvent包含connectionId属性.来自该客户端的每条消息在IpHeaders.CONNECTION_ID消息头中都具有相同的属性.

>添加一个自定义路由器,跟踪每个连接的登录状态.
>查找连接ID,如果未经过身份验证,则路由到质询/响应子流.
>验证时,路由到正常流程.

要使用任意消息传递(而不是请求/响应),请使用TcpReceivingChannelAdapter和TcpSendingMessageHandler而不是入站网关.两者都配置为使用相同的连接工厂.对于发送到消息处理程序的每条消息,添加IpHeaders.CONNECTION_ID标头以定位特定客户端.

要广播,请为每个连接ID发送消息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读