国产乱子伦无码精品小说_色花堂国产第一页_欧美韩国三级在线观看不卡_中国少妇×XXXX性裸交_在线无码成本人视频动漫

首頁 >資訊參考 >

環(huán)球新消息丨websocket與http區(qū)別_websocket

發(fā)布日期:2023-06-27 10:09:10 來源:互聯(lián)網(wǎng) 分享

你們好,最近小未來發(fā)現(xiàn)有諸多的小伙伴們對于websocket與http區(qū)別,websocket這個問題都頗為感興趣的,今天小活為大家梳理了下,一起往下看看吧。


【資料圖】

1、jquery

2、首先了解一下Websocket的jqueryAPI。

3、/*申請一個WebSocket對象,參數(shù)是要連接的服務(wù)器的地址。就像http協(xié)議以http://開頭一樣,WebSocket協(xié)議的URL以ws://開頭。

4、此外,安全WebSocket協(xié)議以wss://開頭。*/

5、varws=newWebSocket("ws://echo .websocket .org”);

6、//如果鏈接成功,會觸發(fā)ws.onopen事件。

7、ws。on open=function(){ ws。發(fā)送(“測試!”);};

8、//如果服務(wù)器發(fā)送消息,就會觸發(fā)ws.onopen事件。

9、ws.onmessage=function(evt){alert(evt.data)};

10、//關(guān)閉事件

11、ws。關(guān)閉時=功能(evt){控制臺。log(" WebSocket關(guān)閉!");};

12、//錯誤事件

13、ws。on error=function(evt){控制臺。log(" WebSocketError!");};

14、//java

15、package com.byteslounge.websockets;

16、import java.io.IOException;

17、import javax.websocket.OnClose;

18、import javax.websocket.OnMessage;

19、import javax.websocket.OnOpen;

20、import javax.websocket.Session;

21、import javax.websocket.server.ServerEndpoint;

22、//下面url的地址。

23、//比如:http://127.0.0.1/websocket,可以直接訪問。

24、@ServerEndpoint("/websocket")

25、public class WebSocketTest {

26、//

27、@OnMessage

28、public void onMessage(String message, Session session)

29、throws IOException, InterruptedException {

30、//session session,不是帶有httpSession的會話。

31、session.getBasicRemote()。 Send text (message" this information has been forwarded by the server");

32、}

33、//當(dāng)用戶進入時觸發(fā)此事件。

34、@OnOpen

35、public void onOpen() {

36、System.out.println("Client connected");

37、}

38、//我就不解釋了。

39、@OnClose

40、public void onClose() {

41、System.out.println("Connection closed");

42、}

43、}

44、WebSocket和Socket可以連接,但是需要驗證。以下是驗證的方法(握手階段,以下內(nèi)容來自h-t-t-p://jinnianshilongnian . iteye . com/blog/1896756)。

45、在開放階段握手的目的是為了兼容基于HTTP的服務(wù)器軟件和中間件,以便單個端口可以用于與服務(wù)器通信的HTTP客戶端和與服務(wù)器通信的WebSocket客戶端。最后,

46、WebSocket客戶端的握手是一個HTTP升級請求:

47、 GET /chat HTTP/1.1

48、 Host: server.example.com

49、 Upgradewebsocket

50、 Connection: Upgrade

51、 Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

52、 Origin: http://example.com

53、 Sec-WebSocket-Protocol: chat, superchat

54、 Sec-WebSocket-Version: 13

55、根據(jù)[RFC2616],握手中的報頭字段可以由客戶端以任何順序發(fā)送,因此接收到的不同報頭字段中的順序并不重要。

56、“請求-URI”[RFC 2616]的GET方法用于標(biāo)識WebSocket連接的端點,即允許一個IP地址服務(wù)多個域名,一臺服務(wù)器服務(wù)多個WebSocket端點。

57、 客戶端按照[RFC2616]在它的握手的|Host|頭字段中包含主機名,以便客戶端和服務(wù)器都都能驗證他們同意哪一個正在使用的主機。

58、在WebSocket協(xié)議中另外的頭字段可以用于選擇選項。

59、典型的選項在這個版本中可用的是子協(xié)議選擇器(|Sec-WebSocket-Protocol|)、客戶端支持的擴展列表(|Sec-WebSocket-Extensions|)、|Origin|頭字段等。

60、|Sec-WebSocket-Protocol|請求頭字段可以用來表示客戶端接受的子協(xié)議(WebSocket協(xié)議上的應(yīng)用級協(xié)議層)。服務(wù)器選擇一個可接受的協(xié)議或不,

61、并在它的握手中回應(yīng)該值表示它已經(jīng)選擇了那個協(xié)議。

62、 Sec-WebSocket-Protocol: chat

63、|Origin|頭字段[RFC6454]是用于保護防止未授權(quán)的被瀏覽器中的使用WebSocket API的腳本跨域使用WebSocket服務(wù)器。服務(wù)器收到WebSocket連接請求生成的腳本來源。

64、如果服務(wù)器不想接受來自此來源的連接,它可以選擇通過發(fā)送一個適當(dāng)?shù)腍TTP錯誤碼拒絕該連接。這個頭字段由瀏覽器客戶端發(fā)送,對于非瀏覽器客戶端,如果它在這些客戶端上下文中有意義,這個頭字段可以被發(fā)送。

65、最后,服務(wù)器要證明收到客戶端WebSocket握手的客戶端,以便服務(wù)器不接受不是WebSocket連接的連接。

66、這可以防止一個通過使用XMLHttpRequest [XMLHttpRequest]或一個表單提交發(fā)送它精心制作的包欺騙WebSocket服務(wù)器的攻擊者。

67、為了證明收到的握手,服務(wù)器必須攜帶兩條信息并組合他們形成一個響應(yīng)。

68、第一條信息源自客戶端握手中的| Sec-WebSocket-Key |頭信息: Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

69、對于這個頭字段,服務(wù)器必須攜帶其值(出現(xiàn)在頭字段上,如,減去開頭和結(jié)尾空格的base64-編碼[RFC4648]的版本)并將這個與字符串形式的全局唯一標(biāo)識符(GUID,

70、[RFC4122])“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”連接起來,其不太可能被不理解WebSocket協(xié)議的網(wǎng)絡(luò)端點使用。

71、SHA-1散列(160位)[FIPS.180-3]、base-64編碼(參見[RFC4648]第4章)、用于這個的一系列相關(guān)事物接著在服務(wù)器握手過程中返回。

72、服務(wù)器將連接字符串“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”形成字符串“dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11”。

73、來自服務(wù)器的握手比客戶端握手更簡單。首行是一個HTTP Status-Line,具有狀態(tài)碼101:

74、 HTTP/1.1 101 Switching Protocols

75、101以外的任何狀態(tài)碼表示W(wǎng)ebSocket握手沒有完成且HTTP語義仍適用。頭信息遵照該狀態(tài)碼。

76、|Connection|和|Upgrade|頭字段完成HTTP升級。|Sec-WebSocket-Accept|頭字段表示服務(wù)器是否將接受該連接。如果存在,

77、這個頭字段必須包括客戶端在|Sec-WebSocket-Key|中現(xiàn)時發(fā)送的與預(yù)定義的GUID的散列。任何其他值不能被解釋為一個服務(wù)器可接受的連接。

78、 HTTP/1.1 101 Switching Protocols

79、 Upgrade: websocket

80、 Connection: Upgrade

81、 Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

82、這些字段由WebSocket客戶端為腳本頁面做檢查。如果|Sec-WebSocket-Accept|不能匹配盼望的值、如果頭字段缺失、或HTTP狀態(tài)碼不是101,則連接將不能建立,

83、且WebSocket幀將不發(fā)生。

84、可選的字段也可以被包含在內(nèi)。在這合格版本的協(xié)議中,主要可選字段是|Sec-WebSocket-Protocol|,其表示服務(wù)器選擇的子協(xié)議。

85、WebSocket客戶端驗證服務(wù)器包含的在WebSocket客戶端握手中指定的一個值。聲明多個子協(xié)議的服務(wù)器必須確保它選擇一個,基于客戶端握手并指定它在其握手中。

86、 Sec-WebSocket-Protocol: chat

87、服務(wù)器也可以設(shè)置cookie相關(guān)的可選字段為_set_cookies,描述在[RFC6265]。

以上就是websocket這篇文章的一些介紹,希望對大家有所幫助。

標(biāo)簽:

Copyright ©  2015-2022 太平洋獸藥網(wǎng)  版權(quán)所有  備案號:豫ICP備2022016495號-17   聯(lián)系郵箱:93 96 74 66 9@qq.com