[英]NodeJS WebSocket sending message to client
I have two of Nodejs application, one is used as WebSocket server and another one is used as WebSocket Client.我有两个 Nodejs 应用程序,一个用作 WebSocket 服务器,另一个用作 WebSocket 客户端。
server.js服务器.js
const express = require('express');
const WebSocketServer = require('ws');
const wsClient = new WebSocketServer('ws://localhost:1998/');
wsClient.send('Hialo');
const app = express();
const server = app.listen(1989, () => {
console.log('App is listening on 1989');
});
const wss = new WebSocketServer.Server({ server:server });
wss.on("connection", ws => {
console.log("There is a new client!");
ws.on('message', (message) => {
console.log(`Incident message is ${message}`);
})
})
client.js客户端.js
const express = require('express');
const WebSocketServer = require('ws');
const app = express();
const server = app.listen(1998, () => {
console.log('App is listening on 1998');
});
const wss = new WebSocketServer.Server({ server:server });
wss.on("connection", ws => {
console.log("There is a new client!");
ws.on('message', (message) => {
console.log(`Incident message is ${message}`);
})
})
Problem is: when i try to send message from server to client i am getting this error:问题是:当我尝试从服务器向客户端发送消息时,出现此错误:
Error: WebSocket is not open: readyState 0 (CONNECTING)
at WebSocket.send (C:\Users\Public\Projects\wsGroup\wsServer\node_modules\ws\lib\websocket.js:441:13)
at Object.<anonymous> (C:\Users\Public\Projects\wsGroup\wsServer\index.js:5:10)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47
What is the best solution???什么是最好的解决方案???
WebSocket Client Server Example WebSocket 客户端服务器示例
// server.js
const WebSocket = require('ws')
const wss = new WebSocket.Server({ port: 8080 })
wss.on('connection', ws => {
ws.on('message', message => {
console.log(`Received message => ${message}`)
})
ws.send('Hello! Message From Server!!')
})
Client Example客户端示例
// client.js
const WebSocket = require('ws')
const url = 'ws://localhost:8080'
const connection = new WebSocket(url)
connection.onopen = () => {
connection.send('Message From Client')
}
connection.onerror = (error) => {
console.log(`WebSocket error: ${error}`)
}
connection.onmessage = (e) => {
console.log(e.data)
}
With Express JS server.js使用 Express JS server.js
const express = require('express');
const ws = require('ws');
const app = express();
// Set up a headless websocket server that prints any
// events that come in.
const wsServer = new ws.Server({ noServer: true });
wsServer.on('connection', socket => {
socket.on('message', message => console.log(message));
});
// `server` is a vanilla Node.js HTTP server, so use
// the same ws upgrade process described here:
// https://www.npmjs.com/package/ws#multiple-servers-sharing-a-single-https-server
const server = app.listen(3000);
server.on('upgrade', (request, socket, head) => {
wsServer.handleUpgrade(request, socket, head, socket => {
wsServer.emit('connection', socket, request);
});
});
client.js客户端.js
const ws = require('ws');
const client = new ws('ws://localhost:3000');
client.on('open', () => {
// Causes the server to print "Hello"
client.send('Hello');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.