當前位置:首頁 » 網頁前端 » 前端套接字
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端套接字

發布時間: 2022-05-30 09:28:51

Ⅰ 春季角ngstomp WebSocket控制器不執行問題,怎麼解決

兩年前,客戶端與伺服器端的全雙工雙向通信作為一個很重要的功能被納入到WebSocket RFC 6455協議中。在HTML5中,WebSocket已經成為一個流行詞,大家對這個功能賦予很多構想,很多時候甚至是不切實際的期望。在這篇文章中,我們將重點介紹下如何通過Spring Framework 4.0來構建一個基於 STMOP協議的WebSocket形式的應用。該應用通過 Message Broker向用戶廣播消息,並使用SockJS作為瀏覽器前端通信代碼庫。
傳統的Socket交互需要很多項技術的支持,包括Java applet,XMLHttpRequest,Adobe Flash, ActiveXObject, 各種 Comet和服務端發送事件等等。相較於通過如此繁雜的技術來實現Socket交互,WebSockt就顯得簡潔易用得多了。但是別高興得太 早,無論看起來如何誘人,WebSocket現在都還只不過是一個基礎而已。即便它確實為WEB的雙向通信設定了一些重要的標准,但也還只是第一步。要成 為一個成熟的Socket交互方案,WebSocket還需要解決網路代理設置和瀏覽器支持等一系列的問題。
WebSocket和REST對比
當你開始接觸WebSocket應用時,為了找尋你可能會遇到的問題的答案,你就要快速地瀏覽一下這篇文章,基於不同的應用類型其中包含了關於 WebSocket是否會替代REST的有趣而不可思議的討論。該類型(WebSocket)應用相對於偶爾工作的應用(web郵件,新聞更新等)擁有更 強大的能力來面對全天候,實時交互(比如游戲、金融、協作化、可視化等)的復雜情況,無論哪種方式,他都是通常人們所熟悉的,而且REST是我們目前通用 的web應用構建風格.在此並非想通過這樣的對比來抵制這些創新,還是讓我們看看能從中學到什麼吧,而這2個要點還是需要我們去觀察才能發現的.
首先,與其他相比,REST是一種在使用無狀態和超媒體(鏈接)時,支持許多URL和少量的HTTP方法的架構方式。與之對應的,WebSocket是一個完全不同的消息模式的架構方式。它不僅僅是一個現有AJAX技術的替代品,更是一個事件驅動的、被動的方法。
第二,REST是基於HTTP的,是在TCP之上建立的一個應用協議,能夠提供給我們用於建立應用邏輯的URLs,HTTP方法,請求或者響應頭,狀態碼,和一些其他的關鍵件。相比之下,WebSocket是一個TCP之上的一個簡單層。它就是一個沒有被定義內容的可以被分解成消息的位元組流。在不對一個消息內容做出假設的情況下,一個框架能夠做的很少。當應用做出那樣的假定之後,他們就會圍繞這些假定來創建自己的框架。
WebSocket協議定義了sub-protocols的使用(即更高級別的協議)但沒有引用它。無論哪種方式,應用都需要決定使用什麼消息格式——自定義的、特定框架的或標準的。
總之,一個WebSocket式的應用意味著一個事件驅動型的、響應式的消息傳遞架構。此外工作在WebSocket層次對於大多數應用程序都比較底層,就像現在的大多數Web應用不直接在套接字上編程。
通向實時網路之路
我們可以從現有的各種框架里看到好多使用高等消息API,也在底層使用WebSocket,並在必要時依賴一些其他的備選項(比如HTTP流,長輪詢 等)。即便是在今天,也需要依賴於WebSocket和非WebSocket的混合技術。關鍵區別就在於框架是否提供一個單獨的API允許在必要時透明的 回退到非WebSocket傳輸。
一些框架,比如Socket.io和Vert.x提供輕量級的應用組件為事件和消息指定處理者。另一部分,像CometD,通過內部建立一個消息代理來為綁定和接收消息提供通道。像RabbitMQ或者ActiveMQ也提供了直接從瀏覽器獲取消息代理的選項。當遇到通信架構時,消息代理模式適合用於構造規模應用的。
Spring4.0的方法
Spring4.0 ——也就是當前的候選版本,預計GA於2013年12月發布——一個目標就是為Websocket類型的應用提供支持。它不僅在基於JSR-356容器之 上提供Websocket API 表現良好,而且也為那些不支持或者不允許使用Websocket的瀏覽器和網路提供了一些候選項。更重要的是,它為在網路應用中構建Websocket形 式的消息架構提供了基礎。
我們決定使用SockJS protocol作為候選項。它能為這些候選項,提供著最好和最廣泛的傳輸方式。
對於基於WebSocket模式的消息驅動的架構來說,我們也查看了許多現有的方法,我們喜歡這種真正的消息代理的處理能力,也同樣喜歡一個網頁應用使用 中心處理模塊的方式。畢竟,我們必須採用一個消息驅動的架構,但同時我們也是網路開發者,更習慣建立網頁應用,所以結果不能和我們已知的相差太大。
第一步就是選擇一個消息的格式。有許多簡單消息協議諸如STOMP,MQTT和WAMP。這些都適合應用於網頁客戶端,並為基本的消息模式提供支持。我們 選擇了STOMP,因為它的消息格式是基於HTTP模塊化的,同時它也能被廣泛的支持。然而,我們的處理模塊並沒有過分依賴於STOMP,這個處理模塊也 能被擴展成支持其他簡單協議。
使用STOMP協議能夠讓我們站在WebSocket的肩膀上。它能夠提供一種方法來解析一個消息應該傳遞給誰,我們又對接收什麼樣的消息感興趣。它允許我們像是使用廣播消息代理的插件一樣使用可用的客戶端庫文件,比如stomp.js和msg.js。這就是明顯的優勢。
Spring4提供了STOMP支持。通過兩三行的配置,你就可以在網路客戶端中把它當做一個輕量級的消息代理。它能夠不需要任何伺服器代碼就自動處理綁 定的事件,並允許控制器方法處理進來的消息和綁定事件。這與如何通過Spring MVC映射HTTP請求到控制器方法是相似的。實際上,一個spring MVC控制器能夠被擴展成基於WebSocket的接收STOMP消息的形式。
@Controller public class GreetingController { @RequestMapping(value=」/greeting」, method=POST) public void httpGreet(String text) { // ... } @MessageMapping("/greeting") public void stompGreet(String text) { // ... } }

使用一個全功能的消息代理
在一個全功能的的消息代理中做一個插件也是很容易的。舉個例子,RabbitMQ(或者其他STOMP消息代理),能夠被用來處理客戶端廣播消息的綁定。 在這個場景中,Spring仍然是處於網路客戶端連接和交換數據的網路應用層。同時,它也當做一個網關來為RabbitMQ服務,允許消息從應用流向 RabbitMQ,接著轉發給綁定此消息的客戶端。下面的流程圖就是描述這種路徑的:

這個路徑闡述了運行在多伺服器和雲環境中的大量應用實例能夠通過RabbitMQ服務廣播到達所有連接的客戶端,而不論此時客戶端連接的是哪一個應用實例。此外,也很容易從HTTP請求處理方法廣播消息到連接的客戶端或者應用的其他部分。
如需更詳盡的技術概覽說明,請移步spring.io上的M2 blog post,運行股票投資組合樣例,或者瀏覽spring開發頻道的在線論壇。我們最近發布了RC1候選版。如果你有一個應用的想法,現在是努力去實現和提供反饋絕佳時機。
如果你恰好在倫敦區域或者很容易到達這里,在11月的14、15日兩天,這里有一個spring 交流會。屆時會有spring關鍵工程師代表出席,並會發布最偉大的spring4.0框架和我們支持WebSocket的STOMP協議。

Ⅱ 前端的請求信息是通過socket通訊傳替到後端的嗎

一般情況下,前端請求都是http請求,也是WEB默認的請求協議。

Ⅲ 網站建設底層搭建是要做什麼

在進行網站建設的時候,常常遇到不同的協議,Socket和http協議都可以實現數據傳輸,但兩種傳輸方式在網站建設中有什麼各自的特點,和缺點,如何選擇合適的傳輸方式。

1 數據傳輸方式

1.1 Socket傳輸的定義和其特點

所謂socket通常也稱作"套接字",實現網站伺服器和客戶端之間的物理連接,並進行數據傳輸,主要有UDP和TCP兩個協議。Socket處於網路協議的傳輸層。

UDP協議:廣播式數據傳輸,不進行數據驗證

TCP協議:傳輸控制協議,一種面向連接的協議,給用戶進程提供可靠的全雙工的位元組流,

Socket 傳輸的特點:

優點

1) 傳輸數據為位元組級,傳輸數據可自定義,數據量小(對於手機應用講:費用低)

2) 傳輸數據時間短,性能高

3) 適合於客戶端和伺服器端之間信息實時交互

4) 可以加密,數據安全性強

缺點:

1) 需對傳輸的數據進行解析,轉化成應用級的數據

2) 對網站建設開發人員的開發水平要求高

3) 相對於Http協議傳輸,增加了網站開發量

1.2 基於Http協議傳輸的定義和其特點

目前在網站建設中基於http協議傳輸的主要有http協議 和基於http協議的Soap協議(web service),常見的方式是 http 的post 和get 請求,web 服務,比如訪問一個網站http://www.hualai.net.cn,則使用的是http協議。

基於http協議建設網站的傳輸特點

優點:

1) 基於網站應用級的介面使用方便

2) 網站建設人員開發水平要求不高,容錯性強

缺點:

1) 傳輸速度慢,網站數據包大(Http協議中包含輔助應用信息)

2) 如實時交互,網站伺服器性能壓力大。

3) 數據傳輸安全性差

2 各數據傳輸方式的適用范圍

2.1 Socket傳輸適用范圍

基於Socket傳輸的特點:Socket 傳輸方式適合於對傳輸速度,安全性,實時交互,費用等要求高的應用中,如網路游戲,手機應用,銀行內部交互等

2.2 基於Http協議傳輸的適用范圍

基於http協議傳輸的特點:基於http協議傳輸方式適合於對傳輸速度,安全性要求不是很高,且需要快速開發的網站應用。如公司OA網站系統,互聯網服務等。

Ⅳ 前端與後端用不同的socket庫能通信嗎

可以的。
確切地說前端是使用html5的websocket,只要有可訪問socket伺服器就能通信。

Ⅳ web前端可以使用websocket開啟服務嗎

1 通訊通道選擇:這個很多前端高手已經回答了,基本就是兩種方式:輪詢和長連接,這種情況通常的解決方式是長連接,Web端可以用WebSocket來解決,這也是業界...

Ⅵ Linux中 後台伺服器server 關閉掉前段客戶端的套接字,導致前端程序停止

描敘的太模糊了

Ⅶ 求救~!構成網路操作系統通信機制的是什麼~

網路的構成
計算機網路的構成

計算機網路系統是由網路硬體和網路軟體組成的。在網路系統中,硬體的選擇對網路起著決定的作用,而網路軟體則是挖掘網路潛力的工具。

網路硬體

網路硬體是計算機網路系統的物質基礎。要構成一個計算機網路系統,首先要將計算機及其附屬硬體設備與網路中的其他計算機系統連接起來,實現物理連接。不同的計算機網路系統,在硬體方面是有差別的。隨著計算機技術和網路技術的發展,網路硬體日趨多樣化,且功能更強,更復雜。常見的網路硬體有伺服器、工作站、網路介面卡、集中器、數據機、終端及傳輸介質等。

伺服器

在計算機網路中,分散在不同地點擔負一定數據處理任務和提供資源的計算機被稱為伺服器。伺服器是網路運行、管理和提供服務的中樞,它影響著網路的整體性能。一般在大型網路中採用大型機、中型機和小型機作為網路伺服器,可以保證網路的可靠性。對於網點不多、網路通信量不大、數據的安全可靠性要求不高的網路,可以選用高檔微機作網路伺服器。

工作站

在計算機區域網中,網路工作站是通過網卡連接到網路上的一台個人計算機,它仍保持原有計算機的功能,作為獨立的個人計算機為用戶服務,同時它又可以按照被授予的一定許可權訪問伺服器。工作站之間可以進行通信,可以共享網路的其他資源。

網路介面卡

網路介面卡也稱為網卡或網板,是計算機與傳輸介質進行數據交互的中間部件,主要進行編碼轉換。在接收傳輸介質上傳送的信息時,網卡把傳來的信息按照網路上信號編碼要求和幀的格式接受並交給主機處理。在主機向網路發送信息時,網卡把發送的信息按照網路傳送的要求裝配成幀的格式,然後採用網路編碼信號向網路發送出去。

數據機

數據機(MODEM)是調制器和解調器的簡稱,是實現計算機通信的外部設備。數據機是一種進行數字信號與模擬信號轉換的設備。計算機處理的是數字信號,而電話線傳輸的是模擬信號,在計算機和電話線之間需要一個連接設備,將計算機輸出的數字信號變換為適合電話線傳輸的模擬信號,在接收端再將接收到的模擬信號變換為數字信號由計算機處理。因此,數據機成對使用。

終端

終端設備是用戶進行網路操作所使用的設備,它的種類很多,可以是具有鍵盤及顯示功能的一般終端,也可以是一台計算機。

傳輸介質

傳輸介質是傳送信號的載體,在計算機網路中通常使用的傳輸介質有雙絞線、同軸電纜、光纖、微波及衛星通信等。它們可以支持不同的網路類型,具有不同的傳輸速率和傳輸距離。

網路軟體

在網路系統中,網路中的每個用戶都可享用系統中的各種資源,所以系統必須對用戶進行控制,否則就會造成系統混亂,造成信息數據的破壞和丟失。為了協調系統資源,系統需要通過軟體工具對網路資源進行全面的管理,進行合理的調度和分配,並採取一系列的保密安全措施,防止用戶不合理的對數據和信息的訪問,防止數據和信息的破壞與丟失。

網路軟體是實現網路功能所不可缺少的軟環境。通常網路軟體包括網路協議軟體、網路通信軟體和網路操作系統。

網路結構

在不同的網路系統中,網路結構及所選擇使用的網路軟體是有差別的。對於實用的網路系統來說,選擇什麼硬體和軟體是根據系統的規模、系統的結構決定的。比如Novell區域網,如果網路系統所涉及的地理范圍小,同時系統所擁有的數據量和通信數據量不大,那麼只要一台網路伺服器,並具備系統所規定的工作站數,選擇適當的通信介質和相匹配的網路介面卡、網路軟體、網路操作系統就可以建立起一個完整的網路系統。

在一個遠程網路系統中所需要的設備和技術更為復雜。在遠程通信網中,伺服器與工作站、伺服器通過集中器與工作站直接通信的部分是短程通信;而伺服器與各工作站通信需要經過數據機或前端處理機的通信部分屬於遠程通信。

計算機網路結構通常有星型結構、匯流排型結構、環型結構、樹型結構和網狀結構。

星型結構

星型結構是以一個節點為中心的處理系統,各種類型的入網機器均與該中心處理機有物理鏈路直接相連,與其他節點間不能直接通信,與其他節點通信時需要通過該中心處理機轉發,因此中心節點必須有較強的功能和較高的可靠性。

星型結構的優點是結構簡單、建網容易、控制相對簡單。其缺點是屬集中控制,主機負載過重,可靠性低,通信線路利用率低。

匯流排結構

將所有的入網計算機均接入到一條通信傳輸線上,為防止信號反射,一般在匯流排兩端連有終結器匹配線路阻抗。匯流排結構的優點是信道利用率較高,結構簡單,價格相對便宜。缺點是同一時刻只能有兩個網路節點在相互通信,網路延伸距離有限,網路容納節點數有限。在匯流排上只要有一個節點連接出現問題,會影響整個網路的正常運行。目前在區域網中多採用此種結構。

環型結構

環型結構將各個連網的計算機由通信線路連接成一個閉合的環。在環型結構的網路中,信息按固定方向流動,或順時針方向,或逆時針方向。其傳輸控制機制較為簡單,實時性強,但可靠性較差,網路擴充復雜。

樹型結構

樹型結構實際上星型結構的一種變形,它將原來用單獨鏈路直接連接的節點通過多級處理主機進行分級連接。這種結構與星型結構相比降低了通信線路的成本,但增加了網路復雜性。網路中除最低層節點及其連線外,任一節點或連線的故障均影響其所在支路網路的正常工作。

網狀結構

網狀結構其優點是節點間路徑多,碰撞和阻塞可大大減少,局部的故障不會影響整個網路的正常工作,可靠性高;網路擴充和主機入網比較靈活、簡單。但這種網路關系復雜,建網不易,網路控制機制復雜。廣域網中一般用網狀結構。

網路拓撲結構圖

常用的網路拓撲結構圖如下,在組建區域網時常採用星型、環型、匯流排型和樹型結構。樹型和網狀結構在廣域網中比較常見。但是在一個實際的網路中,可能是上述幾種網路構型的混合。

星型結構圖 匯流排型結構圖

環型結構圖 樹型結構圖

網狀結構圖

http://210.41.4.20/course/53/53/whjc/computer/information/DOC/1-3-2.HTM#

Ⅷ 前端怎麼調用socket

<!DOCTYPEhtml>
<metacharset="utf-8"/>
<title>WebSocketTest</title>
<scriptlanguage="javascript"type="text/javascript">
varwsUri="ws://echo.websocket.org/";
varoutput;

functioninit(){
output=document.getElementById("output");
testWebSocket();
}

functiontestWebSocket(){
websocket=newWebSocket(wsUri);
websocket.onopen=function(evt){
onOpen(evt)
};
websocket.onclose=function(evt){
onClose(evt)
};
websocket.onmessage=function(evt){
onMessage(evt)
};
websocket.onerror=function(evt){
onError(evt)
};
}

functiononOpen(evt){
writeToScreen("CONNECTED");
doSend("WebSocketrocks");
}

functiononClose(evt){
writeToScreen("DISCONNECTED");
}

functiononMessage(evt){
writeToScreen('<spanstyle="color:blue;">RESPONSE:'+evt.data+'</span>');
websocket.close();
}

functiononError(evt){
writeToScreen('<spanstyle="color:red;">ERROR:</span>'+evt.data);
}

functiondoSend(message){
writeToScreen("SENT:"+message);
websocket.send(message);
}

functionwriteToScreen(message){
varpre=document.createElement("p");
pre.style.wordWrap="break-word";
pre.innerHTML=message;
output.appendChild(pre);
}

window.addEventListener("load",init,false);
</script>
<h2>WebSocketTest</h2>
<divid="output"></div>
</html>

主要代碼解讀:

申請一個WebSocket對象,參數是需要連接的伺服器端的地址,同http協議使用http://開頭一樣,WebSocket協議的URL使用ws://開頭,另外安全的WebSocket協議使用wss://開頭。。

varwsUri="ws://echo.websocket.org/";
websocket=newWebSocket(wsUri);

WebSocket對象一共支持四個消息 onopen, onmessage, onclose和onerror,

我們可以看出所有的操作都是採用消息的方式觸發的,這樣就不會阻塞UI,使得UI有更快的響應時間,得到更好的用戶體驗。

當Browser和WebSocketServer連接成功後,會觸發onopen消息;

websocket.onopen=function(evt){
};

如果連接失敗,發送、接收數據失敗或者處理數據出現錯誤,browser會觸發onerror消息;

websocket.onerror=function(evt){
};

當Browser接收到WebSocketServer發送過來的數據時,就會觸發onmessage消息,參數evt中包含server傳輸過來的數據;

websocket.onmessage=function(evt){
};

當Browser接收到WebSocketServer端發送的關閉連接請求時,就會觸發onclose消息。

websocket.onclose=function(evt){
};

WebSocket與TCP、HTTP的關系WebSocket與http協議一樣都是基於TCP的,所以他們都是可靠的協議,Web開發者調用的WebSocket的send函數在browser的實現中最終都是通過TCP的系統介面進行傳輸的。

WebSocket和Http協議一樣都屬於應用層的協議,那麼他們之間有沒有什麼關系呢?答案是肯定的,WebSocket在建立握手連接時,數據是通過http協議傳輸的,但是在建立連接之後,真正的數據傳輸階段是不需要http協議參與的。

Ⅸ 前端項目使用websocket,該如何進行 業務流程的控制

WebSocket的出現是基於Web應用的實時性需要而產生的。這種實時的Web應用大家應該不陌生,在生活中都應該用到過,比如新浪微博的評論、私信的通知,騰訊的WebQQ等。讓我們來回顧下實時 Web 應用的窘境吧。

Ⅹ 前端JS可以連接MYsql資料庫嗎和php有什麼不同

Node.JS 伺服器可以在 後端 連接mysql,這時的情況和php是一樣的。

我從未見過前端JS直接連接mysql的,原因是:

(1)瀏覽器內置的javascript 引擎一般只支持websocket,即基於http連接的套接字高層協議,而不是真正的socket,因此除非伺服器端也開啟websocket服務並拆開套接字轉發到mysql,否則無法代理連接

(2)我見過的絕大多數mysql 伺服器都工作在伺服器環境下的一個虛擬子網,換句話說,直接的遠程3306埠是拒絕連接的,這樣可以隔絕埠直接攻擊

如果前段js直接可以連接後端伺服器mysql的埠,那麼就不叫B/S結構了,而是C/S結構(比如傳統的windows桌面程序),安全上有很多問題,所以大多數瀏覽器也不支持這個操作。