在看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