JavaScript——ReferenceError: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 is not defined
我已经浏览了各种链接,例如 https://davidwalsh.name/websocket ,了解如何实现 WebSockets。但它们都没有导入任何 npm 包 。
问题: 那么,如何实现 WebSockets(客户端 AngularJS)?我在这里遗漏了什么?
尝试
const WebSocket = require('ws');
var socket = new WebSocket('ws://localhost:3000');
然后
npm i ws
并重试。它适用于我的情况
我把这个留在这里,是为了那些在节点应用程序中使用
@stomp/stompjs
包时遇到问题的人。
添加此行:
Object.assign(global, { WebSocket: require('ws') });
另外,不要忘记
npm install ws
当您尝试运行 JavaScript 时,通常在浏览器或 NodeJS 中运行它。
浏览器和 NodeJS 是不同的 JavaScript 运行时。
WebSocket 本身是一种应用层协议,您需要使用 API 来使用它。
目前(2019 年 12 月 5 日),
大多数浏览器都支持 WebSocket API 供开发人员使用 WebSocket。
NodeJS 不提供任何 OOTB API 供开发人员使用 WebSocket,您需要第三方库才能使用 WebSocket(例如 https://github.com/websockets/ws )。
您遵循的示例是在浏览器中使用 WebSocket API。
希望对您有所帮助。