1、pom文件
<dependency>
<groupId>com.corundumstudio.socketio</groupId>
<artifactId>netty-socketio</artifactId>
<version>1.7.19</version>
</dependency>
2、设定三个客户端,即三个用户 userName分别是 97 ,98 ,99
客户端连接到服务器后都加入房间room1,服务端代码如下。
Configuration config = new Configuration();
config.setHostname("0.0.0.0");
config.setPort(9092);
final SocketIOServer server = new SocketIOServer(config);
server.addConnectListener(new ConnectListener() {
@Override
public void onConnect(SocketIOClient socketIOClient) {
//加入房间
System.err.println(socketIOClient.getHandshakeData().getSingleUrlParam("userName")+"加入房间room1");
socketIOClient.joinRoom("room1");
}
});
3、服务端发送群聊消息如下
//房间发送消息
int size = server.getRoomOperations("room1").getClients().size();
if (size == 3){
//房间客户端数等于3 执行房间广播 BroadcastAckCallback 第二个参数是超时时间
server.getRoomOperations("room1").sendEvent("groupEvent",ackChatObjectData,new BroadcastAckCallback<ChatObject>(ChatObject.class,10){
@Override
protected void onClientTimeout(SocketIOClient client) {
//房间里某一个客户端收到消息的回调超时
super.onClientTimeout(client);
String userName = client.getHandshakeData().getSingleUrlParam("userName");
System.err.println("onClientTimeout"+userName);
}
@Override
protected void onClientSuccess(SocketIOClient client, ChatObject result) {
//房间里某一个客户端收到消息的回调成功
super.onClientSuccess(client, result);
String userName = client.getHandshakeData().getSingleUrlParam("userName");
System.err.println("onClientSuccess"+userName);
}
@Override
protected void onAllSuccess() {
super.onAllSuccess();
//所有在线的客户端全部收到消息的回调成功
System.err.println("onAllSuccess");
}
});