2017-04-09 172 views
0

僅關注客戶端API(因爲每種服務器端語言都有自己的API),下面的代碼片斷會打開一個連接,爲連接,斷開連接和消息事件創建事件偵聽器,將消息發送回服務器,並使用WebSocket關閉連接。JavaScript - ReferenceError:未定義WebSocket

// Create a socket instance 
var socket = new WebSocket('ws://localhost:3000'); 

// Open the socket 
socket.onopen = function(event) { 

    // Send an initial message 
    socket.send('I am the client and I\'m listening!'); 

    // Listen for messages 
    socket.onmessage = function(event) { 
     console.log('Client received a message',event); 
    }; 

    // Listen for socket closes 
    socket.onclose = function(event) { 
     console.log('Client notified socket has closed',event); 
    }; 

    // To close the socket.... 
    socket.close() 

}; 

但我上面執行收到錯誤片段:

ReferenceError: WebSocket is not defined

我已經通過各個環節像https://davidwalsh.name/websocket,關於如何實現的WebSockets不見了。但他們都沒有進口任何NPM包

問題:那麼,如何實現WebSockets(客戶端AngularJS)?我在這裏錯過了什麼?

+1

像@Brad提到你的問題是客戶片面。對於Serverside,我會推薦[Socket.io](https://socket.io/),它也有一些示例代碼。服務器和客戶端雙方 – Templum

+0

謝謝@Templum。我曾在Socket.io 上簡單工作我想學習WebSockets。 – kshikhar

+0

確保您在瀏覽器中運行代碼,而不是在NodeJS中運行,還使用支持它的現代[瀏覽器](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) –

回答

1

您在問題中引用的代碼是客戶端代碼。 WebSocket可直接在瀏覽器中使用。

對於您的Node.js服務器端代碼,請看ws NPM package

So, how to implement WebSockets (client side) on NodeJS?

你不知道。 Node.js是服務器端,而不是客戶端。

+0

他仍然可以使用它作爲客戶端連接,他只需要那個 –

+0

@OmriLuzon的正確模塊顯然,儘管它的措辭不是這個問題。錯誤消息清楚地表明詢問的人試圖在服務器上運行Node.js的客戶端代碼。 – Brad

+0

好的,你的回答很有道理。對我來說太愚蠢了。但是如果我在客戶端(AngularJS)使用它,那麼如何使它工作? @Brad – kshikhar