netty-socketio 示例代码

socket.io是一个不错的websocket项目,github上有它的java实现:netty-socketio 及 示例项目 netty-socketio-demo,基本上看看demo示例项目就能很快上手了,但是demo中的示例代码场景为js做客户端,如果需要在java中连接websocket server,可以参考下面的示例:

一、服务端代码

服务端的主要工作,就是添加各种事件的监听,然后在监听处理中,做相应的处理即可。

注:添加事件监听时,如果重复添加监听,会导致事件被处理多次,所以最好在添加事件监听前,先移除之前已经存在的监听,类似下面这样

1
2
chat1namespace.removeAllListeners(Socket.EVENT_MESSAGE);
chat1namespace.addEventListener(Socket.EVENT_MESSAGE, String.class,...

  

 

二、客户端代码

java连接netty-socketio,还要借助另一个开源项目:socket.io-client-java

客户端类似,也是加一些事件监听,然后做相应处理即可。

 

上面的例子,演示了client向server连接时,如何做基本的连接认证(基于token),以及基本的消息收发。

运行效果:

服务端输出

sessionId:f52e9fa3-6216-4742-87de-3228a74469f9,token:87df42a424c48313ef6063e6a5c63297
client data:hello

客户端输出

sessionId:f52e9fa3-6216-4742-87de-3228a74469f9
hi
收到服务器应答,将要断开连接...
连接关闭

注:框架已经自带了一些预设的事件,见下面的代码片段

如果不够的话,可以自行扩展,无非就是一些字符串常量。  

 

三、广播消息隔离

前面的示例,没有"域"的概念,所有连到socket server上的client,如果收发广播的话,全都能收到,如果只希望将消息发到指定的某一"批"用户,可以让这些client归到某个域(或组织机构)里,这样在指定的域范围内广播,只有在这个域内的client才能接受广播,详见下面的示例:(其实变化很小)

server端:

客户端:

注意上面连接时,room1的指定,其它就不多说了,代码就是最好的注释:)

posted @   菩提树下的杨过  阅读(4282)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
历史上的今天:
2016-01-13 bash/shell编程学习(2)
2013-01-13 MAC本遭遇ARP攻击的处理办法
2010-01-13 windows 2008 使用注意事项
点击右上角即可分享
微信分享提示