新建web项目,别忘了导入我们的Jar包
新建main.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>多个websocket通信的实例</title>
<link rel="stylesheet" type="text/css" href="css/chat.css">
<script src="js/jquery.js"></script>
<script>
//首先判断浏览器是否支持我们的websocket
if(!window.WebSocket&&window.MozWebSocket)
window.WebSocket=window.MozWebSocket;
if(!window.WebSocket)
alert("此浏览器不支持WebSocket!");
//我们聊天的初始化
function prepareChat()
{
//首先创建我们的连接
ws=new WebSocket("ws://"+location.host+"/WebSocketChatRoom/ChatDeal");
//连接建立后调用的函数
ws.onopen=function()
{
$("form *").attr("disabled",false);
}
//接收服务器传入的数据时候的处理
ws.onmessage=function(event)
{
//向聊天室当框中追加信息
var chatLog=$("#chatLog");
chatLog[0].innerHTML+="<div class='chatMsg'>"+event.data+"</div>";
}
}
//用户点击提交按钮的处理
function sendMsg()
{
var message=$("#message").val();
//向服务器发送信息
ws.send(message);
$("#message").val("");
}
</script>
</head>
<body>
</body>
</html>
创建servlet
package com.hanqing.deal;
import java.io.IOException;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import org.eclipse.jetty.websocket.WebSocket;
import org.eclipse.jetty.websocket.WebSocketServlet;
public class ChatDeal extends WebSocketServlet
{
public final Set<ChatWebSocket> users=new CopyOnWriteArraySet<ChatWebSocket>();
public WebSocket doWebSocketConnect(HttpServletRequest arg0, String arg1)
{
System.out.println(users.size());
// TODO Auto-generated method stub
return new ChatWebSocket(users);
}
//进行处理websocket的类
public class ChatWebSocket implements WebSocket.OnTextMessage
{
//连接对象
private Connection connection;
//所有用户的集合
private Set<ChatWebSocket> users;
public ChatWebSocket()
{
}
public ChatWebSocket(Set<ChatWebSocket> users)
{
this.users=users;
}
public void onClose(int arg0, String arg1) {
users.remove(this);
}
public void onOpen(Connection connection) {
this.connection=connection;
users.add(this);
}
//接收从客户端而来的数据时候被调用
public void onMessage(String data) {
//System.out.println(data);
//对所有用户送出信息
for(ChatWebSocket user:users)
{
try {
user.connection.sendMessage(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
本文介绍了一个使用WebSocket实现的多用户聊天程序。通过创建WebSocket连接,用户可以在不同浏览器间实时交流。程序包括一个HTML页面用于用户交互,以及一个Servlet处理WebSocket连接和消息传递。目前,聊天内容可以在多个浏览器窗口间同步显示,但发送者信息未实现显示,后续将进行完善。
472

被折叠的 条评论
为什么被折叠?



