乐趣区

关于netty:nettysocketio

netty-socketio 学习资源

初级教程,也是源码 git 我的项目举荐的 demo

因为没有 guide,所以只能多看我的项目,一下是在网上参考的一些我的项目,给了我很大的帮忙:

  • Spring Boot 实战之 netty-socketio 实现简略聊天室(给指定用户推送音讯)
  • git 上的一个用了分布式和分布式锁的 NettySocketServer 该类 MySocketIOServer 是比拟重要的一个类
  • Spring Boot 实战之 netty-socketio 实现简略聊天室

根本应用

这里总结一下 NettySocketIO 的根本应用,只是说一下大略流程,具体细节实现看代码:

  1. 配置com.corundumstudio.socketio.Configuration 并实例化 SocketIOServer server = new SocketIOServer(config)
  2. 通过 com.corundumstudio.socketio.annotation.OnConnect 等注解 来实现监听 socket 连贯、断开、接管音讯等。而后通过依赖注入 new SpringAnnotationScanner(SocketIOServer socketIOServer),通过该类来扫描@OnConnect, OnEvent 等注解,注册正真的监听器。
  3. 当然了,也能够通过 Configuration.setXxxListenerSocketIOServer.addEventListener 来注册监听器,算是 2 步骤的扩大。
  4. 最初客户端就能够通过 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() 办法退出房间。房间信息,次要就保留在 NamespaceroomClientsclientRooms 中。默认的所有用户都会进入 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/…

退出移动版