在看WebSocket,相关的一些服务器的支持情况大概是:
Tomcat目前还不支持WebSocket,
Jetty7开始支持WebSocket,
JBoss的Netty需要插件后可以支持WebSocket,
Node.js可以配合node-websocket-server一起使用来运行WebSocket ( https://github.com/miksago/node-websocket-server)
这里参考Jetty8里面的原有的Demo,修改整理出来一份能够独立运行的WebSocket示例。
需要做的工作大概如下
1. 下载Jetty8
版本: jetty-hightide-8.0.0.M2 ,
地址: http://dist.codehaus.org/jetty/jetty-hightide-8.0.0.M2/
2. Eclipse创建一个动态的Web工程,把Jetty8的Run
3. 编写 WebSocketServlet代码 WebSocketChatServlet.java
4. 在web.xml中配置servlet
5. 编写Web页面 ws/index.html
6. 导出war文件 Jetty8WebSocket.war, 放到jetty的webapps目录下
7. 启动jetty8
jetty-hightide-8.0.0.M2 admin$ java -jar start.jar
8. 打开Chrome浏览器,我用的是Chrome11
浏览器中输入http://localhost:8080/Jetty8WebSocket/ws/
可以聊天了。
效果是这样纸滴:

下面直接贴代码
File: WebSocketChatServlet.java
==============================================================
package com.acme;
import java.io.IOException;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.io.Connection;
import org.eclipse.jetty.util.TypeUtil;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.websocket.WebSocket;
import org.eclipse.jetty.websocket.WebSocket.Outbound;
import org.eclipse.jetty.websocket.WebSocketServlet;
public class WebSocketChatServlet extends WebSocketServlet
{
private final Set<ChatWebSocket> _members = new CopyOnWriteArraySet<ChatWebSocket>();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws javax.servlet.ServletException ,IOException
{
getServletContext().getNamedDispatcher("default").forward(request,response);
};
public WebSocket doWebSocketConnect(HttpServletRequest request, String protocol)
{
return new ChatWebSocket();
}
class ChatWebSocket implements WebSocket
{

本文介绍了一个基于Jetty8的WebSocket聊天Demo,包括下载Jetty8、创建Web工程、配置WebSocketServlet和编写Web页面的步骤。示例代码展示了WebSocketServlet的实现和WebSocketChatServlet的工作流程,帮助理解如何在实际应用中使用WebSocket进行实时通信。

1585

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



