架构师讲解Java中websocket的应用(1),详细学习指南

本文介绍了Java中WebSocket的应用,包括管理连接池的WsPool类,WebSocket服务器WsServer的生命周期方法,以及客户端连接、消息处理和心跳维持。通过示例代码展示如何在服务端和客户端实现WebSocket通信,确保连接稳定并处理不同类型的客户端消息。
摘要由CSDN通过智能技术生成

public static Collection getOnlineUser() {

List setUsers = new ArrayList();

Collection setUser = wsUserMap.values();

for (String u : setUser) {

setUsers.add(u);

}

return setUsers;

}

/**

  • 移除连接池中的连接

  • @param inbound

*/

public static boolean removeUser(WebSocket conn) {

if (wsUserMap.containsKey(conn)) {

wsUserMap.remove(conn); // 移除连接

return true;

} else {

return false;

}

}

/**

  • 向特定的用户发送数据

  • @param user

  • @param message

*/

public static void sendMessageToUser(WebSocket conn, String message) {

if (null != conn && null != wsUserMap.get(conn)) {

conn.send(message);

}

}

/**

  • 向所有的用户发送消息

  • @param message

*/

public static void sendMessageToAll(String message) {

Set keySet = wsUserMap.keySet();

synchronized (keySet) {

for (WebSocket conn : keySet) {

String user = wsUserMap.get(conn);

if (user != null) {

conn.send(message);

}

}

}

}

}

3.接下来我们编写websocket的主程序类

该类用于管理[websocket]的生命周期。该类继承自WebSocketServer ,这是一个实现了runnable接口的类,他的构造函数需要传入一个端口,所以我们需要为websocket服务指定一个端口,该类有四个要重载的方法,[onOpen()]方法在连接创建成功以后调用,onClose在连接关闭以后调用,[onError方法]在连接发生错误的时候调用(一般连接出错以后触发了onError,也会紧接着触发onClose方法)。

onMessage方法在收到客户端发来消息的时候触发。我们可以在这个方法中处理客户端所传递过来的消息。

package com.xdx.websocket;

import java.net.InetSocketAddress;

import org.java_websocket.WebSocket;

import org.java_websocket.handshake.ClientHandshake;

import org.java_websocket.server.WebSocketServer;

public class WsServer extends WebSocketServer {

public WsServer(int port) {

super(new InetSocketAddress(port));

}

public WsServer(InetSocketAddress address) {

super(address);

}

@Override

public void onOpen(WebSocket conn, ClientHandshake handshake) {

// ws连接的时候触发的代码,onOpen中我们不做任何操作

}

@Override

public void onClose(WebSocket conn, int code, String reason, boolean remote) {

//断开连接时候触发代码

userLeave(conn); System.out.println(reason);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值