81,092
社区成员
发帖
与我相关
我的任务
分享
private static int onlineCount = 0;
// concurrent包的线程安全Set,用来存放每个客户端对应的Websocket_firstServer对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
private static CopyOnWriteArraySet<Websocket_firstServer> webSocketSet = new CopyOnWriteArraySet<Websocket_firstServer>();
// 与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;
*//**
* 连接建立成功调用的方法
*
* @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
*//*
@OnOpen
public void onOpen(Session session) {
this.session = session;
webSocketSet.add(this); // 加入set中
addOnlineCount(); // 在线数加1
System.out.println("有新连接加入!当前在线人数为" + getOnlineCount());
}
*//**
* 连接关闭调用的方法
*//*
@OnClose
public void onClose() {
webSocketSet.remove(this); // 从set中删除
subOnlineCount(); // 在线数减1
System.out.println("有一连接关闭!当前在线人数为" + getOnlineCount());
}
*//**
* 收到客户端消息后调用的方法
*
* @param message 客户端发送过来的消息 @param session 可选的参数
*//*
@OnMessage
public void onMessage(String message, Session session) {
System.out.println("来自客户端的消息:" + message);
// 群发消息
for (Websocket_firstServer item : webSocketSet) {
try {
item.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
continue;
}
}
}
*//**
* 发生错误时调用
* @param session
* @param error
*//*
@OnError
public void onError(Session session, Throwable error) {
System.out.println("发生错误");
error.printStackTrace();
}
public void sendMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
// this.session.getAsyncRemote().sendText(message);
}
public static synchronized int getOnlineCount() {
return onlineCount;
}
public static synchronized void addOnlineCount() {
Websocket_firstServer.onlineCount++;
}
public static synchronized void subOnlineCount() {
Websocket_firstServer.onlineCount--;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>html5+bootstrap</title>
</head>
<body>
<script type="text/javascript">
var socket=null;
//判断当前浏览器是否支持WebSocket
if('WebSocket' in window){
socket = new WebSocket("ws://localhost:8080/websocket/");
}else{
alert('Not support websocket')
}
// 打开Socket
socket.onopen = function(event) {
// 发送一个初始化消息
socket.send('I am the client and I\'m listening!');
// 监听消息
socket.onmessage = function(event) {
console.log('Client received a message',event);
};
// 监听Socket的关闭
socket.onclose = function(event) {
console.log('Client notified socket has closed',event);
};
// 关闭Socket....
//socket.close()
};
</script>
</body>
</html>
"NetworkError: 404 Not Found - http://localhost:8080/websocket/"
/websocket/
Firefox 无法建立到 ws://localhost:8080/websocket/ 服务器的连接。
socket = new WebSocket("ws://localhost:8080/websocket/");