『壹』 前端怎麼調用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 應用的窘境吧。
『叄』 如何建立WebSocket服務端
其實,在伺服器的選擇上很廣,基本上,主流語言都有WebSocket的伺服器端實現,而我們作為前端開發工程師,當然要選擇現在比較火熱的NodeJS作為我們的伺服器端環境了。
NodeJS本身並沒有原生的WebSocket支持,但是有第三方的實現(大家要是有興趣的話,完全可以參考WebSocket協議來做自己的實現),我們選擇了「ws」作為我們的伺服器端實現。
由於本文的重點是講解WebSocket,所以,對於NodeJS不做過多的介紹,不太熟悉的朋友可以去參考NodeJS入門指南(http://www.nodebeginner.org/index-zh-cn.html)。
安裝好NodeJS之後,我們需要安裝「ws」,也就是我們的WebSocket實現,安裝方法很簡單,在終端或者命令行中輸入:
npm install ws
,等待安裝完成就可以了。
接下來,我們需要啟動我們的WebSocket服務。首先,我們需要構建自己的HTTP伺服器,在NodeJS中構建一個簡單的HTTP伺服器很簡單,so easy。代碼如下:
var app = http.createServer(onRequest ).listen( 8888 );
onRequest()作為回調函數,它的作用是處理請求,然後做出響應,實際上就是根據接收的URL,在伺服器上查找相應的資源,最終返回給瀏覽器。
在構建了HTTP伺服器後,我們需要啟動WebSocket服務,代碼如下:
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer( { server : app } );
從代碼中可以看出,在初始化WebSocket服務時,把我們剛才構建好的HTTP實例傳遞進去就好。到這里,我們的服務端代碼差不多也就編寫完成了。怎麼樣?很簡單吧。
『肆』 web前端可以使用websocket開啟服務嗎
1 通訊通道選擇:這個很多前端高手已經回答了,基本就是兩種方式:輪詢和長連接,這種情況通常的解決方式是長連接,Web端可以用WebSocket來解決,這也是業界...
『伍』 js做的前端能通過websocket與c++寫的後端交互嗎
js做的前端能通過websocket與c++寫的後端交互,使用Easywsclient就可以實現。
1、WebSocket 類的寫法:
//創建webSocket的工廠方法
static pointer from_url(std::string url);
// 創建一個初始的WebSocket
static pointer create_mmy();
//實現真正的網路連接,發送和接收等IO操作
void poll(int timeout = 0); // 參數是超時時間
//接收返回消息並傳到callable中
template<class Callable>
void dispatch(Callable callable);
//發送text類型的消息
void send(std::string message);
//關閉連接
void close();
2、整體實現方法:
#include "easywsclient.hpp"
//#include "easywsclient.cpp" // <-- include only if you don't want compile separately
int
main()
{
...
using easywsclient::WebSocket;
WebSocket::pointer ws = WebSocket::from_url("ws://localhost:8126/foo");
assert(ws);
while (true) {
ws->poll();
ws->send("hello");
ws->dispatch(handle_message);
// ...do more stuff...
}
...
delete ws; // 可選, 使用 unique_ptr<> 如果使用的是 C++11
return 0;
}
『陸』 前端項目使用websocket,該如何進行 業務流程的控制
WebSocket的出現是基於Web應用的實時性需要而產生的。這種實時的Web應用大家應該不陌生,在生活中都應該用到過,比如新浪微博的評論、私信的通知,騰訊的WebQQ等。讓我們來回顧下實時 Web 應用的窘境吧。
『柒』 node.js作為單純的websocket的server端,來完成java的springMVC框架中前端的消息推送,
用node.js安裝WebSocket庫:
npminstallws
然後建立server:
varWebSocketServer=require('ws').Server
,wss=newWebSocketServer({port:8080});
wss.on('connection',function(ws){
ws.on('message',function(message){
console.log('received:%s',message);
});
ws.send('something');
});
客戶端用HTML5標准:
varws=newWebSocket("ws://127.0.0.1:8080/");
ws.onopen=function(){
alert("Opened");
ws.send("I'mclient");
};
ws.onmessage=function(evt){
alert(evt.data);
};
ws.onclose=function(){
alert("Closed");
};
ws.onerror=function(err){
alert("Error:"+err);
};
『捌』 問下關於webSocket的服務端怎麼創建的問題
在伺服器的選擇上很廣,基本上,主流語言都有WebSocket的伺服器端實現,而我們作為前端開發工程師,當然要選擇現在比較火熱的NodeJS作為我們的伺服器端環境了。
NodeJS本身並沒有原生的WebSocket支持,但是有第三方的實現(大家要是有興趣的話,完全可以參考WebSocket協議來做自己的實現),我們選擇了「ws」作為我們的伺服器端實現。
由於本文的重點是講解WebSocket,所以,對於NodeJS不做過多的介紹,不太熟悉的朋友可以去參考NodeJS入門指南(http://www.nodebeginner.org/index-zh-cn.html)。
安裝好NodeJS之後,我們需要安裝「ws」,也就是我們的WebSocket實現,安裝方法很簡單,在終端或者命令行中輸入:
npm install ws
,等待安裝完成就可以了。
接下來,我們需要啟動我們的WebSocket服務。首先,我們需要構建自己的HTTP伺服器,在NodeJS中構建一個簡單的HTTP伺服器很簡單,so easy。代碼如下:
var app = http.createServer(onRequest ).listen( 8888 );
onRequest()作為回調函數,它的作用是處理請求,然後做出響應,實際上就是根據接收的URL,在伺服器上查找相應的資源,最終返回給瀏覽器。
在構建了HTTP伺服器後,我們需要啟動WebSocket服務,代碼如下:
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer( { server : app } );
從代碼中可以看出,在初始化WebSocket服務時,把我們剛才構建好的HTTP實例傳遞進去就好。到這里,我們的服務端代碼差不多也就編寫完成了。怎麼樣?很簡單吧。