共计 2174 个字符,预计需要花费 6 分钟才能阅读完成。
netty-socketio 学习资源
初级教程,也是源码 git 我的项目举荐的 demo
因为没有 guide,所以只能多看我的项目,一下是在网上参考的一些我的项目,给了我很大的帮忙:
- Spring Boot 实战之 netty-socketio 实现简略聊天室(给指定用户推送音讯)
- git 上的一个用了分布式和分布式锁的 NettySocketServer 该类 MySocketIOServer 是比拟重要的一个类
- Spring Boot 实战之 netty-socketio 实现简略聊天室
根本应用
这里总结一下 NettySocketIO 的根本应用,只是说一下大略流程,具体细节实现看代码:
- 配置
com.corundumstudio.socketio.Configuration
并实例化SocketIOServer server = new SocketIOServer(config)
。 - 通过
com.corundumstudio.socketio.annotation.OnConnect
等注解 来实现监听 socket 连贯、断开、接管音讯等。而后通过依赖注入new SpringAnnotationScanner(SocketIOServer socketIOServer)
,通过该类来扫描@OnConnect
,OnEvent
等注解,注册正真的监听器。 - 当然了,也能够通过
Configuration.setXxxListener
和SocketIOServer.addEventListener
来注册监听器,算是 2 步骤的扩大。 - 最初客户端就能够通过
io.connect('http://localhost:9090?token='+userName);
来连贯到 socket,而后就能够通信了。因为 NettySocketIO 是通过集成socket.io
这个库来实现 socket 的,所以客户端语言不限,然而必须也要应用 socketio 的库,socketio 官网
NettySocketIO 是一个开源框架,非要说什么官网的话 怕就是下面说到的他的 git 地址了。而且本人去找 NettySocketIO 的应用 DEMO 也是少的可怜,文档更是没有,所以只能本人去钻研了。博主通过钻研 NettySocketIO 源码,总结以下:
Namespace
:Namespace implements SocketIONamespace
。而且也是SocketIONamespace
的惟一实现,SocketIOServer 中申明了它的实例mainNamespace
,外面保留了 所有的监听器、所有的客户端、客户端与 Room 的对应关系等数据,能够说他保留着 SocketServer 的用户所有信息。Namespace 都会有一个名字,新创建一个 Server 的时候,都会默认创立一个名字为""
的 Namespace。NamespaceHub
:SocketIOServer
中有它的一个实例,叫namespaceHub
。保留了该 server 的所有Namespace
(尽管当初还不晓得第二个 create 第二个 Namespace 用来干什么)和 该 Server 的配置- room : 房间。
NettySocketIO
曾经提供了房间的性能。能够通过 String 类型的房间名来给所有在该房间里的所有用户发送音讯。能够通过socketIOClient.joinRoom("room1");
来退出房间,也能够通过SocketIOServer.getNamespace(xx).joinRoom()
办法退出房间。房间信息,次要就保留在Namespace
的roomClients
和clientRooms
中。默认的所有用户都会进入 Namespace.DEFAULT_NAME(“”),能够了解为是大厅房间。 BroadcastOperations
: BroadcastOperations 就是一个播送器,外面保留了 SocketIoClient 的列表和 StoreFactory(临时认为是一个公布音讯的类),所以如果想给某一类用户发消息,就能够把这类用户放入到这个类的实例中,而后一起发送。给某个房间的所有用户发信息server.getRoomOperations("roomName").sendEvent()
参考
https://www.xncoding.com/2017…
https://blog.csdn.net/u014635…
https://github.com/root-wyj/s…
https://github.com/wangnamu/N…
https://github.com/dolyw/Proj…
版本问题:https://blog.csdn.net/qq_4173…
https://github.com/Heit/netty…
https://github.com/mrniko/net…
https://github.com/hiwepy/soc…
https://developer.aliyun.com/…官网
https://socket.io/
https://github.com/mrniko/net…
https://github.com/socketio/e…
https://github.com/trinopoty/…