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/...