① websocket 和 socket.io 之間的區別是什麼
websocket和socket.io之間的區別為:性質不同、兼容不同、用途不同。
一、性質不同
1、websocket:websocket是一種讓客戶端和伺服器之間能進行雙向實時通信的技術。
2、socket.io:socket.io是將WebSocket、AJAX和其它的通信方式全部封裝成了統一的通信介面。
二、兼容不同
1、websocket:在使用websocket時,,雖然主流瀏覽器都已經支持,但仍然可能有不兼容的情況。
2、socket.io:在使用socket.io時,不用擔心兼容問題,底層會自動選用最佳的通信方式。
三、用途不同
1、websocket:websocket適合用於client和基於node搭建的服務端使用。
2、socket.io:socket.io適合進行服務端和客戶端雙向數據通信。
② WebSocket 和 Socket 的區別
1、原理上的區別:
Socket是傳輸控制層協議,WebSocket是應用層協議。
Socket是應用層與TCP/IP協議族通信的中間軟體抽象層,它是一組介面(不是協議,為了方便使用TCP或UDP而抽象出來的一層,是位於應用層和傳輸控制層之間的一組介面)。
在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket介面後面。利用TCP/IP協議建立TCP連接。(TCP連接則更依靠於底層的IP協議,IP協議的連接則依賴於鏈路層等更低層次。)
WebSocket則是一個典型的應用層協議。
2、靈活運用的程度不同:
WebSocket 更易用,而 Socket 更靈活。Socket是應用層與TCP/IP協議族通信的中間軟體抽象層,它是一組介面。
在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket介面後面,對用戶來說,一組簡單的介面就是全部,讓Socket去組織數據,以符合指定的協議。
主機 A 的應用程序要能和主機 B 的應用程序通信,必須通過 Socket 建立連接,而建立 Socket 連接必須需要底層 TCP/IP 協議來建立 TCP 連接。建立 TCP 連接需要底層 IP 協議來定址網路中的主機。
網路層使用的 IP 協議可以幫助我們根據 IP 地址來找到目標主機,但是一台主機上可能運行著多個應用程序,如何才能與指定的應用程序通信就要通過 TCP 或 UPD 的地址也就是埠號來指定。這樣就可以通過一個 Socket 實例唯一代表一個主機上的一個應用程序的通信鏈路了。
而WebSocket則不同,它是一個完整的應用層協議,包含一套標準的API。
3、傳輸層次不同:
Socket 是傳輸控制層的介面。用戶可以通過 Socket 來操作底層 TCP/IP 協議族通信。
網路中的 Socket 並不是什麼協議,而是為了使用 TCP,UDP 而抽象出來的一層 API,它是位於應用層和傳輸層之間的一個抽象層。Socket 是對 TCP/IP 的封裝;HTTP 是轎車,提供了封裝或者顯示數據的具體形式;Socket 是發動機,提供了網路通信的能力。
在 Unix 一切皆文件哲學的思想下,Socket 是一種"打開—讀/寫—關閉"模式的實現,伺服器和客戶端各自維護一個"文件",在建立連接打開後,可以向自己文件寫入內容供對方讀取或者讀取對方內容,通訊結束時關閉文件。
WebSocket 是一種在單個 TCP 連接上進行全雙工通信的協議。WebSocket 使得客戶端和伺服器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。
在 WebSocket API 中,瀏覽器和伺服器只需要完成一次 HTTP 握手,兩者之間就直接可以創建持久性的連接,並進行雙向數據傳輸。
③ websocket 和 socket.io 之間的區別是什麼
一、性質不同
1.Websocket:Websocket是一種支持客戶端和伺服器之間雙向實時通信的技術。
2.套接字。IO:套接字。IO是將WebSocket、AJAX等通信方式封裝成統一的通信介面。
二、兼容性是不同的
1.websocket:在使用websocket時,雖然主流瀏覽器已經被支持,但是可能存在不兼容性。
2,套接字。io:使用插座的時候。io中,不擔心兼容性問題,底層會自動選擇最佳的通信方式。
三、用途不同
1.websocket:websocket適合用於client和基於node搭建的服務端使用。
2.socket.io:socket.io適合進行服務端和客戶端雙向數據通信。
④ 怎麼啟動websocket服務
關於websocket服務如何啟動,代碼如下:
@ServerEndpoint(value = "/chat-room-channel")
public class ChatRoomChannel {
Logger logger = LoggerFactory.getLogger(ChatRoomChannel.class);
public static final Set<Session> SESSIONS = Collections.synchronizedSet(new HashSet<Session>());
public static void notifyAll(String message) {
synchronized (SESSIONS) {
final Iterator<Session> i = SESSIONS.iterator();
while (i.hasNext()) {
final Session session = i.next();
if (session.isOpen()) {
session.getAsyncRemote().sendText(message);
}
}
}
}
@OnOpen
public void onConnect(final Session session){
SESSIONS.add(session);
HashMap<String, Object> msgMap = new HashMap<String, Object>();
msgMap.put(Commom.TYPE, Commom.ONLINE);
msgMap.put(Commom.MESSAGE, SESSIONS.size());
String messgae = new JSONObject(msgMap).toString();
logger.debug(messgae);
notifyAll(messgae);
}
}
⑤ 網頁列印時提示websocket沒有準備好
用谷歌瀏覽器
網頁列印時提示websocket沒有準備好就是瀏覽器的設置錯誤,只要換成谷歌就可以正常使用。WebSocket是HTML5一種新的協議。
WebSocket實現了瀏覽器與伺服器全雙工通信,能更好的節省伺服器資源和帶寬並達到實時通訊,建立在TCP之上,同HTTP一樣通過TCP來傳輸數據,一些瀏覽器反映要慢一些,所以更換瀏覽器就可以正常使用了。
WebSocket協議
WebSocket是一種雙向通信協議,在建立連接後,WebSocket伺服器和Browser/ClientAgent都能主動的向對方發送或接收數據,就像Socket一樣;
WebSocket需要類似TCP的客戶端和伺服器端通過握手連接,連接成功後才能相互通信。相對於傳統HTTP每次請求-應答都需要客戶端與服務端建立連接的模式,WebSocket是類似Socket的TCP長連接的通訊模式。
⑥ socket和websocket的區別
socket是TCP/IP進程間通訊的底層實現(當然,socket只是ipc中的一種,此外還有消息隊列、信號燈、共享內存等很多手段)。
http(s)是在socket之上封裝的一種上層通訊協議,其特點是:
服務端監聽通訊,被動提供服務;客戶端主動向服務端發起連接請求,建立起通訊。
每一次交互都是:客戶端主動發起請求(request),服務端被動應答(response)。
服務端不能主動向客戶端推送數據。
通信的數據是基於文本格式的。二進制數據(比如圖片等)要利用base64等手段轉換為文本後才能傳輸。
websocket也是在socket之上封裝的一種上層通訊協議,其特點是:
websocket通訊的建立階段是依賴於http協議的。最初的握手階段是http協議,握手完成後就切換到websocket協議,並完全與http協議脫離了。
建立通訊時,也是由客戶端主動發起連接請求,服務端被動監聽。
通訊一旦建立連接後,通訊就是「全雙工」模式了。也就是說服務端和客戶端都能在任何時間自由得發送數據,非常適合服務端要主動推送實時數據的業務場景。
交互模式不再是「請求-應答」模式,完全由開發者自行設計通訊協議。
通信的數據是基於「幀(frame)」的,可以傳輸文本數據,也可以直接傳輸二進制數據,效率高。當然,開發者也就要考慮封包、拆包、編號等技術細節。
⑦ 瀏覽器不支持websocket怎麼辦
1、新建web project。找到tomcat 7.0 lib 下的catalina.jar,tomcat-coyote.jar添加到項目中如下是我的目錄結構。
⑧ 如何使用WebSocket
WebSocket是HTML5開始提供的一種瀏覽器與伺服器間進行全雙工通訊的網路技術。在WebSocket API中,瀏覽器和伺服器只需要做一個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。
Cocos2d-x引擎集成libwebsockets,並在libwebsockets的客戶端API基礎上封裝了一層易用的介面,使得引擎在C++, JS, Lua層都能方便的使用WebSocket來進行游戲網路通訊。
文章很長,給你一個鏈接:
【cocos2d-x教程】如何使用WebSocket_網路經驗
http://jingyan..com/article/c33e3f48ae9158ea14cbb562.html