我正在运行NodeJS网络应用。我有一个运行的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?
答案 0 :(得分:0)
请勿使用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的其他端口。
以上不是TLS的Secure WS服务器的代码。这有点不同。