将jwebsocket嵌入到tomcat中环境的搭建

     在历时长达七八个小时之久后,终于完成了jwebsocket环境的搭建,这对于我这种过四级还得靠踩狗屎外加那天没做杀人放火的事才能勉勉强强过去的人,中文资料的匮乏真是让我生不如死,无奈,硬着头皮开始读那怎么看怎么不顺眼的英文,冒着自己火气蹭一下上来砸电脑的风险开始了jwebsocket环境的搭建。在这个过程中,我体验过无数次的充满希望和无数次想骂街的心情。
   jwebsocket官网上其实对于环境的搭建描述得很清楚,自己也确实小心翼翼的跟着人家的步骤进行环境的搭建。
   前置条件:
   1.下载jWebSocketServer-1.0.zip解压并且设置JWEBSOCKET_HOME 。
   2. 
jWebSocketServer-Bundle-1.0.jarjWebSocketSamples-1.0.jar拷贝到tomcat6lib
     重点强调的一点是:一定要注意 
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/中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值