JavaScript - ReferenceError:未定义WebSocket

jjjwad0x  于 2023-05-12  发布在  Java
关注(0)|答案(5)|浏览(229)

只关注客户端API(因为每种服务器端语言都有自己的API),下面的代码片段打开一个连接,为connect、disconnect和message事件创建事件侦听器,向服务器发回一条消息,然后使用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()

};

但是我在执行上面的代码段时出现错误:

参考错误:未定义WebSocket
我已经浏览了各种链接,如https://davidwalsh.name/websocket,关于如何实现WebSockets。但是他们都没有导入任何npm包

**问题:**那么,如何实现WebSockets(客户端AngularJS)?我错过了什么?

vmjh9lq9

vmjh9lq91#

试试看

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

然后
npm i ws
然后重审这是我的案子

pkmbmrz7

pkmbmrz72#

我把这个留给那些在node应用程序中遇到@stomp/stompjs包问题的人。
添加这一行:
Object.assign(global, { WebSocket: require('ws') });
另外,不要忘记npm install ws

8wtpewkr

8wtpewkr3#

您在问题中引用的代码是客户端代码。WebSocket可直接在浏览器中使用。
对于Node.js服务器端代码,请查看ws NPM package
那么,如何在NodeJS上实现WebSockets(客户端)呢?
Node.js是服务器端的,而不是客户端的。

6tr1vspr

6tr1vspr4#

当你试图运行JavaScript时,通常你可以在浏览器或NodeJS中运行它。
浏览器和NodeJS是不同的JavaScript运行时。
WebSocket本身是一个应用层协议,你需要使用API来使用它。
目前(2019年12月5日),
大多数浏览器都支持WebSocket API,以便开发人员使用WebSocket。
NodeJS不提供任何OOTB API供开发人员使用WebSocket,您需要第三个库来使用WebSocket(例如https://github.com/websockets/ws)。
您遵循的示例是在浏览器中使用WebSocket API。
希望能帮上忙。

flvtvl50

flvtvl505#

如果您在浏览器控制台上收到此错误,请务必检查拼写和大小写。确保“WebSocket”以大写字母开头。否则,它可能会抛出引用错误。

let ws = new WebSocket("ws://localhost:8080")

相关问题