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;
    }

}
View Code

相关文章:

  • 2022-12-23
  • 2021-10-12
  • 2022-02-21
  • 2021-12-18
  • 2021-12-15
  • 2022-12-23
  • 2021-12-31
猜你喜欢
  • 2021-08-16
  • 2021-04-11
  • 2021-11-27
  • 2021-12-20
  • 2021-12-09
  • 2021-12-28
相关资源
相似解决方案