天天看點

基于tomcat運作HTML5 WebSocket echo例子

一:概述

作為HTML5新特性之一的WebSocket元件,在實時性有一定要求的WEB應用開發中還是有一定用武之地,高版本的IE、Chrome、FF浏覽器都支援Websocket,标準的Websocket通信是基于RFC6455實作伺服器端與用戶端握手與消息接發的。如果對Websocket通信不是太了解,可以檢視RFC文檔即可,簡單說就是通過發送HTTP請求,實作雙方握手,将無狀态的HTTP通信協定進一步更新成有狀态的通信協定,同時Websocket還支援子協定選項與安全傳輸。标準的websocket連接配接URL以ws開頭,如果是基于TLS的則以wss開頭。基于Websocket可以很友善的開發基于web聊天程式,各種網頁消息通知與推送通知。

         如果非要扒一扒websocket的今生前世的話,還記得最早的基于HTTP輪詢實作網頁即時通信的方式,那種做法比較消耗資源、于是有人改進了程式設計CometD長連接配接方式,可是本質上還是換湯不換藥,而websocket的出現正好解決了這些問題,但是很多浏覽器的低版本還是不支援websocket,于是還催生了一些基于websocket理念實作的JS通信架構,其中學得比較像的有SockJS與socket.io,他們都号稱支援websocket,然後如果浏覽器端不支援原生的websocket,它們會自動啟用fallback選項使用其它諸如ajax、Http輪詢、長輪詢/連接配接、甚至是flash的socket等機制實作模拟websocket的工作方式,但是他們最大的弊端是如果用戶端使用了這些架構,伺服器必須用它們,否則等待開發者就是一大堆無法回避的問題,同時很多都是無解的。主要原因在于它們實作自己的協定集,不照它們的格式處理資料沒法玩。閑話說的有點多。

二 : 實作步驟

Tomcat7的高版本中實作了websocket伺服器端RFC6455标準協定,可以跟浏覽器端websocket進行通信,首先要做好如下幾步:

1.      安裝高版本JDK – JDK8

2.      安裝tomcat 7.0.64

3.      在eclipse中建立一個動态的web項目

根據JSR标準,Java中實作websocket的标準接口可以基于注解方式,tomcat也搞好了,隻有我們實作如下代碼,即可建立一個websocket回聲伺服器:

如何在tomcat中啟動websocket伺服器,首先需要在web.xml添加如下配置:

然後實作ServerApplicationConfig接口,實作如下:

建立網頁echo.html,内容如下:

三 :運作與測試

打包部署到tomcat之後,啟動chrom浏覽器,輸入位址:

http://localhost:8080/websocket/echo.html 

基于tomcat運作HTML5 WebSocket echo例子

後來,我還發現,tomcat實作websocket伺服器端居然不支援子協定

跟3W上的測試URL結果不一樣。

繼續閱讀