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

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

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

 

  一、概述

 

  作為HTML5新特性之一的WebSocket組件,在實時性有一定要求的WEB應(yīng)用開發(fā)中還是有一定用武之地,高版本的IE、Chrome、FF瀏覽器都支持Websocket,標(biāo)準(zhǔn)的Websocket通信是基于RFC6455實現(xiàn)服務(wù)器端與客戶端握手與消息接發(fā)的。如果對Websocket通信不是太理解,可以查看RFC文檔即可,簡單說就是通過發(fā)送HTTP請求,實現(xiàn)雙方握手,將無狀態(tài)的HTTP通信協(xié)議進(jìn)一步升級成有狀態(tài)的通信協(xié)議,同時Websocket還支持子協(xié)議選項與安全傳輸。標(biāo)準(zhǔn)的websocket連接URL以ws開頭,如果是基于TLS的則以wss開頭。基于Websocket可以很方便的開發(fā)基于web聊天程序,各種網(wǎng)頁消息通知與推送通知。

 

  如果非要扒一扒Websocket的今生前世的話,還記得最早的基于HTTP輪詢實現(xiàn)網(wǎng)頁即時通信的方式,那種做法比較消耗資源、于是有人改進(jìn)了編程CometD長連接方式,可是本質(zhì)上還是換湯不換藥,而websocket的出現(xiàn)正好解決了這些問題,但是很多瀏覽器的低版本還是不支持websocket,于是還催生了一些基于websocket理念實現(xiàn)的JS通信框架,其中學(xué)得比較像的有SockJS與socket.io,他們都號稱支持websocket,然后如果瀏覽器端不支持原生的websocket,它們會自動啟用fallback選項使用其它諸如ajax、Http輪詢、長輪詢/連接、甚至是flash的socket等機(jī)制實現(xiàn)模擬websocket的工作方式,但是他們最大的弊端是如果客戶端使用了這些框架,服務(wù)器必須用它們,否則等待開發(fā)者就是一大堆無法回避的問題,同時很多都是無解的。主要原因在于它們實現(xiàn)自己的協(xié)議集,不照它們的格式處理數(shù)據(jù)沒法玩。閑話說的有點多。

 

  二、實現(xiàn)步驟

 

  Tomcat7的高版本中實現(xiàn)了Websocket服務(wù)器端RFC6455標(biāo)準(zhǔn)協(xié)議,可以跟瀏覽器端websocket進(jìn)行通信,首先要做好如下幾步:

 

  1.安裝高版本JDK – JDK8

  2.安裝Tomcat 7.0.64

  3.在eclipse中建立一個動態(tài)的web項目

 

  根據(jù)JSR標(biāo)準(zhǔn),Java中實現(xiàn)websocket的標(biāo)準(zhǔn)接口可以基于注解方式,tomcat也搞好了,只有我們實現(xiàn)如下代碼,即可創(chuàng)建一個websocket回聲服務(wù)器:

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服務(wù)器,首先需要在web.xml添加如下配置:

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


  然后實現(xiàn)ServerApplicationConfig接口,實現(xiàn)如下:

  創(chuàng)建網(wǎng)頁echo.html,內(nèi)容如下:

[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的博客

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

相關(guān)文檔推薦

由于實際運行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達(dá)到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對JavascriptAPI的擴(kuò)展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應(yīng)用人性化的操作體驗,特別是原生應(yīng)用與生俱來的豐富的手勢系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個產(chǎn)品,或者是一個作品集,又或者僅僅只是一個靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設(shè)計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認(rèn)!這是對我的極大鼓勵!我的
本文主要內(nèi)容有:框架與組件、構(gòu)建生態(tài)、開發(fā)技巧與調(diào)試、html、css與重構(gòu)、native/hybrid/桌面開發(fā)、前端/H5優(yōu)化、全棧/全端開發(fā)、研究實驗、數(shù)據(jù)分析與監(jiān)控、其它軟技能、前端技術(shù)網(wǎng)
主站蜘蛛池模板: 久草视频免费看 | 激情综合网站 | 欧美 日韩 国产 成人 在线 | 国产精品手机在线 | 免费的黄色录像 | 免费黄色片网站 | 日韩成人在线免费观看 | 亚洲黄色大片 | 免费av片| 在线播放亚洲 | 欧美精品日韩少妇 | 伊人网综合| 亚洲黄色一级 | 久久久久久久久久久国产 | 九九热在线视频观看 | 中文字幕丰满人伦在线 | 亚洲一区二区三区在线播放 | 日本视频在线免费观看 | 日韩高清一区二区 | 日韩免费在线 | 久久精品国产一区二区 | 免费一级黄色片 | 黄色片视频在线观看 | 国产福利在线播放 | 中文字幕一区二区三区在线观看 | 中文字幕一二区 | 国产免费一区二区三区免费视频 | 国产成人综合网 | 欧美在线观看视频 | 放几个免费的毛片出来看 | 91小视频在线观看 | 欧美综合视频 | 看毛片视频 | 欧美黄视频 | www.日韩av| 久久久久久久国产精品 | 香蕉伊人网 | 久久久午夜 | 久久久久久免费毛片精品 | 中文字幕日韩在线观看 | 中文字幕综合网 |