仅关注客户端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)?我在这里缺少什么?
答案 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。
希望有帮助。