NodeJS中的Websockets。从服务器端WebSocket客户端调用WebSocketServer

时间:2017-03-24 16:04:46

标签: node.js websocket

我正在运行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?

1 个答案:

答案 0 :(得分:0)

请勿使用localhost。用127.0.0.1替换它。

  1. 实例化服务器
  2. 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服务器的代码。这有点不同。