在历时长达七八个小时之久后,终于完成了jwebsocket环境的搭建,这对于我这种过四级还得靠踩狗屎外加那天没做杀人放火的事才能勉勉强强过去的人,中文资料的匮乏真是让我生不如死,无奈,硬着头皮开始读那怎么看怎么不顺眼的英文,冒着自己火气蹭一下上来砸电脑的风险开始了jwebsocket环境的搭建。在这个过程中,我体验过无数次的充满希望和无数次想骂街的心情。
jwebsocket官网上其实对于环境的搭建描述得很清楚,自己也确实小心翼翼的跟着人家的步骤进行环境的搭建。
前置条件:
1.下载jWebSocketServer-1.0.zip解压并且设置JWEBSOCKET_HOME 。
2. 将jWebSocketServer-Bundle-1.0.jar、jWebSocketSamples-1.0.jar拷贝到tomcat6的lib下
重点强调的一点是:一定要注意 jWebSocketServer-Bundle-1.0.jar的版本,我下载过n个版本的jWebSocketServer-Bundle-1.0.jar,各 个不同的版本在我的tomcat下包各种千奇百怪的错,而且不同版本的jWebSocketServer-Bundle-1.0.jar大小差别挺大,最后,在老外的论坛上亲亲苦苦的一字一句的终于找到了一个可以在我的tomcat下使用的版本。jWebSocketServer-Bundle-1.0-nb20412.zip 解压出来的 jWebSocketServer-Bundle-1.0.jar可以使用。
3.将JWEBSOCKET_HOME/libs/下所有的jar添加我们的类路径中
4. 创建监听器
public class ContextListener implements ServletContextListener {
jwebsocket官网上其实对于环境的搭建描述得很清楚,自己也确实小心翼翼的跟着人家的步骤进行环境的搭建。
前置条件:
1.下载jWebSocketServer-1.0.zip解压并且设置JWEBSOCKET_HOME 。
2. 将jWebSocketServer-Bundle-1.0.jar、jWebSocketSamples-1.0.jar拷贝到tomcat6的lib下
重点强调的一点是:一定要注意 jWebSocketServer-Bundle-1.0.jar的版本,我下载过n个版本的jWebSocketServer-Bundle-1.0.jar,各 个不同的版本在我的tomcat下包各种千奇百怪的错,而且不同版本的jWebSocketServer-Bundle-1.0.jar大小差别挺大,最后,在老外的论坛上亲亲苦苦的一字一句的终于找到了一个可以在我的tomcat下使用的版本。jWebSocketServer-Bundle-1.0-nb20412.zip 解压出来的 jWebSocketServer-Bundle-1.0.jar可以使用。
3.将JWEBSOCKET_HOME/libs/下所有的jar添加我们的类路径中
4. 创建监听器
public class ContextListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent aSCE) {
// 启动WebSocket服务
//JWebSocketFactory.printCopyrightToConsole();
// check if home, config or bootstrap path are passed by command line
JWebSocketConfig.initForWebApp(aSCE.getServletContext());
JWebSocketFactory.start();
//获取一个tokenServer
TokenServer lTS0 = JWebSocketFactory.getTokenServer();
if (lTS0 != null) {
//给tokenServer增加自定义监听器(监听客户端与Server的一切交互)
System.out.println("----------tokenServer found");
lTS0.addListener(new MyJWebSocketTokenListenerSample());
}else{
System.out.println("----------tokenServer not found");
}
// assign web socket server to servlet bridge
//ServletBridge.setServer(JWebSocketFactory.getTokenServer());
}
public void contextDestroyed(ServletContextEvent aSCE) {
// 关闭WebSocket服务
JWebSocketFactory.stop();
}
}
public class
MyJWebSocketTokenListenerSample implements
WebSocketServerTokenListener {
public void processOpened(WebSocketServerEvent aEvent) {
System.out.println("login的时候会调用processOpened-------->Client '"
+ aEvent.getConnector() + "' connected.");
}
public void processPacket(WebSocketServerEvent aEvent,
WebSocketPacket aPacket) {
System.out.println("-------->processPacket@Processing data packet '"
+ aPacket.getUTF8() + "'...");
// Here you can answer an arbitrary text package...
// this is how to easily respond to a previous client's request
// aEvent.sendPacket(aPacket);
// this is how to send a packet to any connector
// aEvent.getServer().sendPacket(aEvent.getConnector(), aPacket);
}
public void processToken(WebSocketServerTokenEvent aEvent, Token aToken) {
// System.out.println("-------->Client '" + aEvent.getConnector()
// + "' sent Token: '" + aToken.toString() + "'.");
// String lNS = aToken.getNS();
// String lType = aToken.getType();
// if ("send".equals(lType)) {
// // {"ns":"org.jwebsocket.plugins.system","type":"send",
// //
// "targetId":"01.32273.0","targetUserName":"tttt","sourceId":"01.32722.3",
// //
// "sourceUserName":"qqqqqq","sender":"guest","data":"22222222","utid":4}
// String receiver = aToken.getString("targetUserName");
// String sender = aToken.getString("sourceUserName");
// String data = aToken.getString("data");
// System.out.println("-----------send......." + sender + "-->"
// + receiver + "[" + data + "]");
// // 自己增加操作,如保存到DB等
// }
System.out.println("客户端发来内容" + aToken.getString("content"));
String name = aToken.getString("name");
String content = aToken.getString("content");
Token response = aEvent.createResponse(aToken);
response.setString("content", name + "你好,我收到你发送的信息" + content);
aEvent.sendToken(response);
}
/**
*
* @param aEvent
*/
public void processClosed(WebSocketServerEvent aEvent) {
System.out.println("-------->Client '" + aEvent.getConnector()
+ "' disconnected.");
}
}
在web.xml中配置 ContextListener 监听器
5在jWebSocketAppSrvDemo-1.0/WEB-INF/classes/conf/log4j.xml问价拷贝自己src/conf/中。
在web.xml中配置 ContextListener 监听器