久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

基于Tomcat運行HTML5 WebSocket echo實例詳解

作為HTML5新特性之一的WebSocket組件,對實時性有一定要求的WEB應用開發中還是有一定用武之地,基于Websocket可以很方便的開發基于web聊天程序,各種網頁消息通知與推送通知。 ...,HTML

 

  一、概述

 

  作為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回聲服務器:

package com.websocket.demo;  
   
import java.io.IOException;  
import java.nio.ByteBuffer;  
   
import javax.websocket.OnMessage;  
import javax.websocket.OnOpen;  
import javax.websocket.Session;  
import javax.websocket.server.ServerEndpoint;  
   
@ServerEndpoint(value = "/echo")  
public class EchoExample {  
       
    @OnMessage  
    public void echoTextMessage(Session session, String msg, boolean last) {  
        try {  
            if (session.isOpen()) {  
                System.out.println("received from client message = " + msg);  
                session.getBasicRemote().sendText(msg, last);  
            }  
        } catch (IOException e) {  
            try {  
                session.close();  
            } catch (IOException e1) {  
            }  
        }  
    }  
       
    @OnOpen  
    public void openConn(Session session) throws IOException {  
        session.getBasicRemote().sendText("hello web socket"); // means open it  
    }  
       
    @OnMessage  
    public void echoBinaryMessage(Session session, ByteBuffer bb, boolean last) {  
        System.out.println("send binary message...");  
        try {  
            if (session.isOpen()) {  
                System.out.println("byte buffer lenghth : " + bb.array().length);  
                System.out.println("byte buffer content: " + ((bb.array()[0]) & 0xff));  
                System.out.println("byte buffer content: " + ((bb.array()[1]) & 0xff));  
                System.out.println("byte buffer content: " + ((bb.array()[2]) & 0xff));  
                session.getBasicRemote().sendBinary(bb, last);  
            }  
        } catch (IOException e) {  
            try {  
                session.close();  
            } catch (IOException e1) {  
                // Ignore  
            }  
        }  
    }  
   
}


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

[listener]  
    [listener-class]org.apache.tomcat.websocket.server.WsContextListener[/listener-class]  
[/listener]


  然后實現ServerApplicationConfig接口,實現如下:

  創建網頁echo.html,內容如下:

[html] 
[head] 
[title>Web Socket Echo Test[/title] 
[script] 
        var ws = null;  
        var count = 0;  
        function setConnected(connected) {  
            document.getElementById('connect').disabled = connected;  
            document.getElementById('disconnect').disabled = !connected;  
            document.getElementById('echo').disabled  = !connected;  
        }  
   
        function connect() {  
            var target = document.getElementById('target').value;  
            if (target == '') {  
                alert('Please select server side connection implementation.');  
                return;  
            }  
   
            if ('WebSocket' in window) {  
                ws = new WebSocket(target);  
            } else if ('MozWebSocket' in window) {  
                ws = new MozWebSocket(target);  
            } else {  
                alert('WebSocket is not supported by this browser.');  
                return;  
            }  
               
            ws.onopen = function () {  
                setConnected(true);  
                log('Info: WebSocket connection opened.');  
            };  
            ws.onmessage = function (event) {  
                log('Received: ' + event.data);

   來源:gloomyfish的博客

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統。HTML5 沒有提
你想要在自己網站上分享一個產品,或者是一個作品集,又或者僅僅只是一個靈感。在你發布到網上之前,你想讓它看起來有吸引力,專業,或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內容有:框架與組件、構建生態、開發技巧與調試、html、css與重構、native/hybrid/桌面開發、前端/H5優化、全棧/全端開發、研究實驗、數據分析與監控、其它軟技能、前端技術網
主站蜘蛛池模板: 国产精品区二区三区日本 | 久久精彩视频 | www天天操 | 成人视屏在线观看 | 成人精品一区二区三区 | 国产精品一区二区久久精品爱微奶 | 欧美一级全黄 | h视频在线播放 | 免费观看毛片 | 日韩一级在线 | 日本精品一区二区三区在线观看视频 | 欧美日韩国产精品一区二区 | 成人免费视频久久 | 免费人成激情视频在线观看冫 | 麻豆changesxxx国产 | 日韩在线免费视频 | 中文字幕乱码亚洲精品一区 | 日韩国产免费 | av色站| 日屁视频 | 日韩在线精品视频 | 丁香婷婷在线视频 | 欧美日本韩国一区二区 | 亚洲五码久久 | 精品久久久久一区 | 欧美精品一区在线 | 精品福利一区二区三区 | 日本中文字幕一区 | 国产成人综合av | 午夜精品福利视频 | 伊人精品一区二区三区 | 亚洲一区二区三区国产 | 亚洲三级av | 亚洲一区二区中文字幕 | av福利网站 | 好姑娘高清在线观看电影 | 国产日韩欧美在线观看 | 国产小u女发育末成年 | 成年人黄色一级毛片 | 亚洲精品成人av久久 | ww亚洲ww亚在线观看 |