1、项目
github地址
https://github.com/socketio/socket.io-client-java
socket.io-client-java项目是从基于JS版本的socket.io迁移过来的,和JS版本有相同的API。
2、初始化Socket
如
IO.Options options = new IO.Options();
options.transports = new String[]{"websocket"};
options.reconnectionAttempts = 2;
options.query = "user=" + loginUser;
//失败重连的时间间隔
options.reconnectionDelay = 1000;
//连接超时时间(ms)
options.timeout = 500;
final Socket socket = IO.socket("http://localhost:22109", options);
重点,Options参数选项,在初始连接时,除了配置必要的参数外,最重要的就是设置客户端唯一性的关键信息。
Options参数选项
参数 | 含义 | 备注 |
---|---|---|
path | host、ip后的服务路径 | |
hostname | ||
host | ||
reconnection | 重连 | boolean |
reconnectionAttempts | 重连重试次数 | |
reconnectionDelay | 失败重连的时间间隔 | |
reconnectionDelayMax | ||
autoConnect | 自动连接 | |
query | url地址query参数格式,向服务端传递初始数据 | |
timeout | 超时 | |
forceNew | 重用连接时强制重新创建 | |
transportOptions | ||
transports | transports = [‘polling’, ‘websocket’] | |
upgrade | ||
secure | ||
callFactory | ||
webSocketFactory | ||
encoder | ||
decoder |
3、绑定接收事件
与连接相关事件:
connect,connect_error,connect_timeout,disconnect,
与重连相关事件
reconnect,reconnect_attempt,reconnecting,reconnect_error,reconnect_failed,
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
logger.info("client connect! ");
socket.send("hello server, my name is client");
}
});
socket.on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
logger.info("client disconnect! ");
}
});
socket.on(Socket.EVENT_MESSAGE, new Emitter.Listener() {
@Override
public void call(Object... args) {
for (Object obj : args) {
logger.info("receive server message="+obj);
}
}
});
socket.on("push_event", new Emitter.Listener() {
@Override
public void call(Object... args) {
for (Object obj : args) {
logger.info("receive server message="+obj);
}
}
});
4、向服务端发送消息
socket.emit(event, args)
socket.emit(event, args, ack)
5、参考文档
https://blog.csdn.net/u013243347/article/details/86661778
https://my.oschina.net/u/875122/blog/1794992
https://www.cnblogs.com/renhui/p/6544835.html