1服务器pom.xml引入
<!-- 服务端 --> <dependency> <groupId>com.corundumstudio.socketio</groupId> <artifactId>netty-socketio</artifactId> <version>1.7.7</version> </dependency> <!-- 客户端 --> <dependency> <groupId>io.socket</groupId> <artifactId>socket.io-client</artifactId> <version>1.0.0</version> </dependency>
2:编写服务端程序 ServerDemo.java
package com.gwzx.gwzxyw.socket.test; import org.apache.log4j.Logger; import com.corundumstudio.socketio.AuthorizationListener; import com.corundumstudio.socketio.Configuration; import com.corundumstudio.socketio.HandshakeData; import com.corundumstudio.socketio.SocketIOClient; import com.corundumstudio.socketio.SocketIOServer; import com.corundumstudio.socketio.listener.ConnectListener; import com.corundumstudio.socketio.listener.DisconnectListener; import com.gwzx.gwzxyw.socket.SocketManager; public class ServerDemo { private static Logger logger = Logger.getLogger(ServerDemo.class); public static void main(String[] args) { try { Configuration config = new Configuration(); config.setHostname("localhost"); config.setPort(9093); //此处做token认证 config.setAuthorizationListener(new AuthorizationListener() { @Override public boolean isAuthorized(HandshakeData data) { System.out.println(data); return true; } }); SocketIOServer server = new SocketIOServer(config); CharteventListener listner = new CharteventListener(); listner.setServer(server); // chatevent为事件名称 server.addEventListener("chatevent", ChatObject.class, listner); // 连接监听器 server.addConnectListener(new ConnectListener() { @Override public void onConnect(SocketIOClient client) { SocketManager.clietMap.put(client.getSessionId(), client); logger.info("连接:SessionId=" + client.getSessionId() + ", 总数con:" + SocketManager.clietMap.size()); } }); // 断开监听器 server.addDisconnectListener(new DisconnectListener() { @Override public void onDisconnect(SocketIOClient client) { // TODO Auto-generated method stub SocketManager.clietMap.remove(client.getSessionId()); logger.info("断开:SessionId=" + client.getSessionId() + ", 总数dis:" + SocketManager.clietMap.size()); } }); // 启动服务 server.start(); Thread.sleep(Integer.MAX_VALUE); server.stop(); } catch (Exception e) { e.printStackTrace(); } } }
消息实体类 ChatObject.java
package com.gwzx.gwzxyw.socket.test; import java.io.Serializable; public class ChatObject implements Serializable { /** * */ private static final long serialVersionUID = 8027556976083577023L; private String userName; private String message; public ChatObject() { } public ChatObject(String userName, String message) { this.userName = userName; this.message = message; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }