WebSocket基于Tomcat7的程序
當(dāng)我開始學(xué)習(xí)GUISOCKET編程時(shí),我一直有一個(gè)夢(mèng)想,我希望有一天我能在WEB上實(shí)現(xiàn)這個(gè)聊天程序。雖然QQ等很多聊天程序已經(jīng)實(shí)現(xiàn),但是他們的實(shí)現(xiàn)都是AJAX,無(wú)非是改進(jìn)AJAX或者使用FLEX。個(gè)人覺(jué)得實(shí)現(xiàn)起來(lái)太復(fù)雜了,沒(méi)有研究??!幾個(gè)星期前,我整天都有時(shí)間學(xué)習(xí),用jetty編寫聊天程序,然后聊天就實(shí)現(xiàn)了。然而,jetty服務(wù)器從未使用過(guò)。中間服務(wù)器差不多用了一個(gè)星期,讓我很糾結(jié)。最后,我可以在實(shí)驗(yàn)室的電腦上成功運(yùn)行?。?!但可悲的是,當(dāng)我移植到我的筆記本上時(shí),卻出現(xiàn)了各種奇怪的錯(cuò)誤??!所以,我又糾結(jié)了,今晚,奇跡發(fā)現(xiàn)tomcat居然也支持了,所以真的安裝了tomcat7.0.27次測(cè)試,驚人的發(fā)現(xiàn)類似于jetty的實(shí)現(xiàn),于是寫了一個(gè)小測(cè)試程序,測(cè)試成功??!以下是我的代碼,有興趣的童鞋可以一起學(xué)習(xí)哦?。。?!
index.jsp
1. <%@ page language='java' import='java.util.*' pageEncoding='UTF-8'%>
2. <%
3. String path = request.getContextPath();
4. "://"
5. ":"
6. "/";
7. %>
8.
9.
10.
11.
12. ">
13.
14. My JSP 'index.jsp'
15.
16.
17.
18.
19.
20.
50.
51.
52.
53. "text" id="msg" value="" size="20"
54. "button" οnclick="sendMessage();" value="發(fā)送"
55.
56.
具體實(shí)現(xiàn)servlet:
1. import
2. import
3. import
4. import
5.
6. import
7. import
8.
9. import
10. import
11. import
12.
13. /**
14. * Tomcat7 簡(jiǎn)單的WebSocket應(yīng)用, WebSocket的servlet接口集成自webSocketServlet,其本質(zhì)是Serlet。
15. * 功能性描述,這部分必須以中文句點(diǎn)結(jié)束。
16. *
17. * 創(chuàng)建日期 2013-7-21
18. * @author longgangbai
19. * @version $Revision$ $Date$
20. * @since 3.0.0
21. */
22. public class WebSocketExtServlet extends
23. org.apache.catalina.websocket.WebSocketServlet {
24. //
25. private Logger logger=Logger.getLogger(WebSocketExtServlet.class.getSimpleName());
26.
27. private static final long
28.
29.
30. @Override
31. protected
32. ";request ws servelt");
33.
34. return new
35. @Override
36. protected void onClose(int
37. ";web socket closed :" status);
38. }
39. @Override
40. protected void
41. ";web socket onOpen !");
42. }
43. @Override
44. protected void onBinaryMessage(ByteBuffer buff) throws
45. // TODO Auto-generated method stub
46. ";web socket Received : !" buff.remaining());
47. }
48.
49. @Override
50. protected void onTextMessage(CharBuffer buff) throws
51. ";web socket Received : !" buff.remaining());
52. //getWsOutbound可以回到目前的WsOutbound,通過(guò)他將數(shù)據(jù)返回到客戶端,以下是nio的CharBuffer
53. for (int j = 0; j < 50; j ) {
54. try
55. 2000);
56. this.getWsOutbound().writeTextMessage(CharBuffer.wrap(String.valueOf(j)));
57. catch
58. // TODO Auto-generated catch block
59. e.printStackTrace();
60. }
61. }
62.
63. }
64.
65. };
66. }
67.
68. }
1.
2.
3. Tomcat7WebSocket
4.
5. websocket
6. class>com.easyway.websocket.WebSocketExtServlet
7.
8.
9. websocket
10. /echo.ws
11.
12.
13. index.html
14. index.htm
15. index.jsp
16. default.html
17. default.htm
18. default.jsp
19.
20.
需要注意的是,在研發(fā)過(guò)程中,必須在tomcatlib目錄下復(fù)制2個(gè)JAR包:catalina.jar tomcat-coyote.jar
但是在你運(yùn)行的時(shí)候一定要把這兩個(gè)包刪掉,否則,就會(huì)和tomcat的包矛盾??!
她們的關(guān)系,也有一定的了解,今天暫時(shí)寫到這里吧!
本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請(qǐng)?jiān)谖闹凶⒚鱽?lái)源及作者名字。
免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com

