NodeJS中的Websockets。从服务器端WebSocket客户端调用WebSocketServer
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodeJS中的Websockets。从服务器端WebSocket客户端调用WebSocketServer相关的知识,希望对你有一定的参考价值。
我正在运行NodeJS Web应用程序。我有一个运行的WebSocketServer。我可以通过客户端机器上的javascript制作的WebSocket连接与我的应用程序进行通信。这是相关的nodejs服务器端代码片段:
var WebSocket = require('ws');
var WebSocketServer = require('ws').Server;
var server = app.listen(process.env.VCAP_APP_PORT || 3000, function () {
console.log('Server started on port: ' + server.address().port);
});
wss.on('connection', function (ws) {
ws.on('message', function (message, flags) {
if (flags.binary) {
var value1 = message.readDoubleLE(0);
var value2 = message.readInt16LE(8);
var value3 = message.readInt8(10);
//message.writeDoubleLE(8.5,0);
ws.send(message, {
binary: true
});
} else {
if (message == "injest") {
ws.send("requested: " + message);
} else if (message == "something") {
wss.clients[0].send('server side initiated call');
} else {
ws.send("received text: " + message);
}
}
});
// ws.send('something'); // Sent when connection opened.
});
所以你看,一切都很简单。
这是我的问题。如何从服务器端应用程序本身的NodeJS代码访问此WebServer?
我试过以下:
var ws = new WebSocket("ws://localhost:443");
ws.on('message', function (message) {
wss.clients[0].send('server side initiated call 1 ');
});
ws.on('close', function (code) {
wss.clients[0].send('server side initiated call 2 ');
});
ws.on('error', function (error) {
wss.clients[0].send(error.toString());
});
ws.send("k");
使用ECONNREFUSED 127.0.0.1:443触发错误功能。
我设置服务器时没有指定端口。如果我这样做,那么从我的客户端html页面调用服务器失败。
那么简单地说,我如何在NodeJS中设置一个WebSocket客户端来访问在该应用程序中创建的WebSocketServer?
不要使用localhost
。用127.0.0.1替换它。
- 实例化服务器
let WebSocketServer = require("ws").Server;
let ws = new WebSocketServer({port: 9090});
ws.on('connection', function (ws) {
console.log(nHelp.chalk.red.bold('Server WebSocket was connected.'));
// Add the listener for that particular websocket connection instance.
ws.on('message', function (data) {
//code goes here for what you need
});
ws.on('close', function () {
console.log('websocket connection closed!');
});
});
您可以在同一个文件中打开其他端口和路由(例如Express),或者为WS以及btw打开其他端口。
以上不是用于TLS的Secure WS服务器的代码。这有点不同。
以上是关于NodeJS中的Websockets。从服务器端WebSocket客户端调用WebSocketServer的主要内容,如果未能解决你的问题,请参考以下文章
Websockets:从NodeJS websocket服务器到带有WebSocketSharp的C#客户端的多个响应
Websockets - 服务器端要求(Windows 服务器,不是 Apache)