当前位置:   article > 正文

netty-socket.io群聊(Room) 消息确认机制_netty消息确认机制

netty消息确认机制

1、pom文件

  1. <dependency>
  2. <groupId>com.corundumstudio.socketio</groupId>
  3. <artifactId>netty-socketio</artifactId>
  4. <version>1.7.19</version>
  5. </dependency>

2、设定三个客户端,即三个用户 userName分别是 97 ,98 ,99

客户端连接到服务器后都加入房间room1,服务端代码如下。

  1. Configuration config = new Configuration();
  2. config.setHostname("0.0.0.0");
  3. config.setPort(9092);
  4. final SocketIOServer server = new SocketIOServer(config);
  5. server.addConnectListener(new ConnectListener() {
  6. @Override
  7. public void onConnect(SocketIOClient socketIOClient) {
  8. //加入房间
  9. System.err.println(socketIOClient.getHandshakeData().getSingleUrlParam("userName")+"加入房间room1");
  10. socketIOClient.joinRoom("room1");
  11. }
  12. });

3、服务端发送群聊消息如下

  1. //房间发送消息
  2. int size = server.getRoomOperations("room1").getClients().size();
  3. if (size == 3){
  4. //房间客户端数等于3 执行房间广播 BroadcastAckCallback 第二个参数是超时时间
  5. server.getRoomOperations("room1").sendEvent("groupEvent",ackChatObjectData,new BroadcastAckCallback<ChatObject>(ChatObject.class,10){
  6. @Override
  7. protected void onClientTimeout(SocketIOClient client) {
  8. //房间里某一个客户端收到消息的回调超时
  9. super.onClientTimeout(client);
  10. String userName = client.getHandshakeData().getSingleUrlParam("userName");
  11. System.err.println("onClientTimeout"+userName);
  12. }
  13. @Override
  14. protected void onClientSuccess(SocketIOClient client, ChatObject result) {
  15. //房间里某一个客户端收到消息的回调成功
  16. super.onClientSuccess(client, result);
  17. String userName = client.getHandshakeData().getSingleUrlParam("userName");
  18. System.err.println("onClientSuccess"+userName);
  19. }
  20. @Override
  21. protected void onAllSuccess() {
  22. super.onAllSuccess();
  23. //所有在线的客户端全部收到消息的回调成功
  24. System.err.println("onAllSuccess");
  25. }
  26. });
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号