h5中websocket


ajax的數據傳輸是單向的,客戶端和服務端沒有連接-----客戶端建立連接發送請求----服務器端沿着建立的連接返回相應----斷開連接

websocket則是可以在客戶端和服務器端進行雙向的數據接收和發送

打個比方:小明在客廳看電視,小明的媳婦在衛生間洗衣服,小明的爸爸在書房看報紙,小明的媽媽在廚房做飯;小明的爸爸餓了,問小明:飯做好了么?這時小明只能去詢問媽媽:飯做好了么,小明的媽媽回復小明說沒做好,小明轉而回復爸爸:飯沒做好。如果按照ajax的習慣現場狀態就變成了這樣:小明的爸爸沒過一秒鍾問小明一次飯做沒做好,小明只能一遍一遍的詢問媽媽飯做沒做好,然后不厭其煩的轉達給爸爸;在整個一個過程中小明充當了服務器的角色,客戶端(小明的爸爸)發出請求,服務器(小明)接收數據然后從數據庫中(小明的媽媽)獲取信息,再轉達給小明的爸爸,才能達到實時展示信息的過程。然而引入websocket后,現場情況轉變成了:小明的爸爸問小明:飯做好了沒,小明轉告媽媽:飯好了告訴爸爸一生,然后小明的媽媽把飯做好了直接告訴小明的爸爸:飯做好;

 

忽略上面我拙劣的例子,下面接着來看websocket

運行環境:基於node 安裝
安裝:npm install socket.io
工作流程:
服務器端 接收 connection 接收完了之后進行emit(發送)
客戶端 需要connect

服務器端使用 nodejs語句編寫:

        var http=require('http');
                    var fs=require('fs');
                    var io=require('socket.io');
                    var httpObj=http.createServer(function(req,res){

                    });
                    httpObj.listen(8080);
                    var ws=io.listen(httpObj);
                    //服務器端接收數據
                    ws.on('connection',function(socket){
                        setInterval(function(){
                            socket.emit('time',Date.now());
                        },1000);
                        socket.on('khd',function(name,content){
                            console.log(name,content);
                        });
                    });                            

客戶端語句編寫:
客戶端處理:
var ws=io.connect('ws://localhost:8081');
客戶端接收數據:
ws.on('time',function(result){
console.log(result);
});
客戶端向服務器端發送數據:
ws.emit('kind','','');
服務器端接收:
soket.on('kind',function(name,content){
console.log(name,content);
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM