1.什麼是websocket?
websocket是為解決客戶端與服務端實時通訊而產生的技術。其本質是先通過http / https協議進行握手後建立乙個用於交換資料的tcp連線,此後服務端與客戶端通過此tcp連線進行實時通訊。
2.websocket的優點
以前我們實現推送技術,用的都是輪詢,在特點的時間間隔有瀏覽器自動發出請求,將伺服器的訊息主動的拉回來,在這種情況下,我們需要不斷的向伺服器傳送請求,然而http request的header是非常長的,裡面包含的資料可能只是乙個很小的值,這樣會占用很多的頻寬和伺服器資源。會占用大量的頻寬和伺服器資源。
websocket api最偉大之處在於伺服器和客戶端可以在給定的時間範圍內的任意時刻,相互推送資訊。在建立連線之後,伺服器可以主動傳送資料給客戶端。
此外,伺服器與客戶端之間交換的標頭資訊很小。
websocket並不限於以ajax(或xhr)方式通訊,因為ajax技術需要客戶端發起請求,而websocket伺服器和客戶端可以彼此相互推送資訊。
3.如何使用websocket
在支援websocket的瀏覽器中,在建立socket之後。可以通過onopen,onmessage,onclose即onerror四個事件實現對socket進行響應:
例:
var ws = new websocket(「ws: //localhost:8080」);
ws.onopen = function()
;ws.onmessage = function(event)
;ws.onclose = function(event)
;ws.onerror = function(event)
;
4.websocket 屬性
屬性 / 描述
socket.readystate 唯讀屬性 readystate 表示連線狀態,可以是以下值:0 - 表示連線尚未建立。1 - 表示連線已建立,可以進行通訊。2 - 表示連線正在進行關閉。3 - 表示連線已經關閉或者連線不能開啟。
socket.bufferedamount 唯讀屬性 bufferedamount 已被 send() 放入正在佇列中等待傳輸,但是還沒有發出的 utf-8 文字位元組數。
5.websocket 事件
事件 / 事件處理程式 / 描述
open socket.onopen 連線建立時觸發
message socket.onmessage 客戶端接收服務端資料時觸發
error socket.onerror 通訊發生錯誤時觸發
close socket.onclose 連線關閉時觸發
6.websocket 方法
socket.send() 使用連線傳送資料
socket.close() 關閉連線
備註:
websocket連線後一分鐘自動斷開關閉,這是因為websocket長連線有預設的超時時間(1分鐘,由proxy_read_timeout決定),就是超過一定的時間沒有傳送任何訊息,連線會自動斷開。解決辦法就是讓瀏覽器每隔一定時間(要小於超時時間)傳送乙個心跳。
例:
window.setinterval(function();
ws.send(json.stringify(ping));
},5000);
所有的操作都是採用事件的方式觸發的,這樣就不會阻塞ui,使得ui有更快的響應時間,得到更好的使用者體驗。
雙通道無限藍屏
摘要 最近組裝台式電腦,記憶體組了雙通道,硬碟裡系統是win10的,開機時出現無限重啟無限藍屏的情況,且藍屏的錯誤提示每次都不一致。折騰了幾天才解決,現將解決方式記錄下來,以備以後參考 配置說明 主機板 華碩 asus tuf b360m plus gaming s cpu intel i7 870...
tcp檔案雙通道傳輸 命令通道和資料通道的關聯
開始的設計 1.開乙個固定的埠監聽,接收命令通道連線。2.開始傳輸資料的時候,為每個使用者臨時開乙個監聽埠,接收資料通道連線。這樣問題在於 資料通道的埠不能用固定的埠來傳輸資料,這樣如果有防火牆,就不知道應該給這個伺服器程式開那些埠,即使把這些資料通道的埠限制在一 定範圍內,實際上還是不好,開的埠過...
雙通道儲存器技術
聽說記憶體開始降價了,充滿好奇心的我就開啟京東看了一下記憶體條的 本來只想買一條的我,下單前看到乙個套裝兩條記憶體居然比單條的 貴了這麼多,帶著好奇詢問了商家,商家的解釋是這樣的 什麼是雙通道儲存器技術 維基百科給出的解釋是 雙通道 英語 dual channel 是一種能夠讓計算機效能增加的技術,...