JavaScript - ReferenceError:未定义WebSocket

时间:2017-04-09 19:56:11

标签: javascript node.js npm websocket

仅关注客户端API(因为每个服务器端语言都有自己的API),以下代码段打开连接,为连接,断开连接和消息事件创建事件侦听器,将消息发送回服务器,并使用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

我已经浏览了各种类似https://davidwalsh.name/websocket的链接,了解如何实现WebSockets。但他们都没有导入任何 npm包

问题:那么,如何实现WebSockets(客户端AngularJS)?我在这里缺少什么?

4 个答案:

答案 0 :(得分:1)

您在问题中引用的代码是客户端代码。 WebSocket可直接在浏览器中使用。

对于Node.js服务器端代码,请查看ws NPM package

  

那么,如何在NodeJS上实现WebSockets(客户端)?

你没有。 Node.js是服务器端,而不是客户端。

答案 1 :(得分:1)

尝试

const WebSocket = require('ws');
var socket = new WebSocket('ws://localhost:3000');

然后

  

我是npm

,然后重试。与我的案子有关

答案 2 :(得分:1)

我把这个留在这里是为了让那些在 node 应用程序中遇到 @stomp/stompjs 包问题的人。

添加这一行:

Object.assign(global, { WebSocket: require('ws') });

另外,不要忘记npm install ws

答案 3 :(得分:0)

通常在尝试运行JavaScript时,可以在浏览器或NodeJS中运行它。

浏览器和NodeJS是不同的JavaScript运行时。

WebSocket本身是一个应用程序层协议,您需要使用API​​来使用它。

当前(2019年12月5日),

大多数浏览器都支持WebSocket API,供开发人员使用WebSocket。

NodeJS不提供任何OOTB API供开发人员使用WebSocket,您需要第3个库才能使用WebSocket(例如https://github.com/websockets/ws)。

您遵循的示例是在浏览器中使用WebSocket API。

希望有帮助。