节点服务器不与 express-ws 一起工作

node server not working with express-ws

我有一个节点 WebServer 能够通过 Websockets 与浏览器(比如 browserInstance)和 linux 终端(比如 ProxyInstance)通信。 Web 服务器的工作是将数据从终端移交给 WebBrowser,反之亦然。请在下面找到 server.js 代码:

var express = require('express');
var expressWs = require('express-ws');


var expressWs = expressWs(express());
var app = expressWs.app;
var appForpage = express();


var browserInstance;
var ProxyInstance;
var browserCounter = 0;
var ProxyCounter = 0;


app.ws('/fromBrowser', function(ws, req, next) {

    console.log("~~~~~~~~~~~~BROWSER");

    if(browserCounter == 1){
            ws.on('message', function(msg) {
                    console.log("Messagae from Browser :", msg);
                    ProxyInstance.send(msg);
            });
    }else{
            browserInstance = ws;
            ws.on('message', function(msg) {
                    console.log("Message from Browser :", msg);
                    ProxyInstance.send(msg);
            });

            browserCounter = 1;
    }


     ws.on('close', function(){
          console.log("Ws Connection closed");
    });

    //next();
});

app.ws('/fromProxy', function(ws, req, next) {
    console.log("~~~~~~~~~~~~PROXY");

    if(ProxyCounter == 0){
            ProxyInstance = ws;
            ProxyCounter = 1;
    }else if(browserCounter == 1){
            ws.on('message', function(msg) {
                    console.log("Message from Proxy: ", msg);
                    browserInstance.send(msg);
            });
    }

    ws.on('close', function(){
          console.log("Ws Connection closed");
    });
    //next();
});

appForpage.use(express.static(__dirname + '/public/')); // index.html resides in public directory

appForpage.listen(5000)
app.listen(3000)

首先,我创建了从代理到网络服务器 (/fromProxy) 然后从浏览器 (/fromBrowser) 的 ws 连接。已成功创建连接。当我尝试通过 Web 服务器将数据从浏览器发送到代理时,它工作正常。在 return 到代理端的第一条消息中,当尝试通过 WebServer 与浏览器通信时,这条消息失败了。我还没有收到来自 Proxy 的任何消息。我需要 运行 以相同的顺序(首先是代理,然后是浏览器..)各自的端点。

我只是节点的初学者。对于我的案例,我还没有在互联网上找到任何示例。我在这里错过了什么?

这真的很傻:( .我还没有从代理注册我的消息回调。请在下面找到工作代码。

var express = require('express');
var expressWs = require('express-ws');


var expressWs = expressWs(express());
var app = expressWs.app;
var appForpage = express();


var browserInstance;
var ProxyInstance;
var browserCounter = 0;
var ProxyCounter = 0;


app.ws('/fromBrowser', function(ws, req, next) {

    console.log("~~~~~~~~~~~~BROWSER");

    if(browserCounter == 1){
            ws.on('message', function(msg) {
                    console.log("Messagae from Browser :", msg);
                    ProxyInstance.send(msg);
            });
    }else{
            browserInstance = ws;
            ws.on('message', function(msg) {
                    console.log("Message from Browser :", msg);
                    ProxyInstance.send(msg);
            });

            browserCounter = 1;
    }


     ws.on('close', function(){
          console.log("Ws Connection closed");
    });

    //next();
});

app.ws('/fromProxy', function(ws, req, next) {
    console.log("~~~~~~~~~~~~PROXY");

    if(ProxyCounter == 0){
            ProxyInstance = ws;
            ProxyCounter = 1;
    }

/*This is the place where i went wrong. damnn..*/
    ws.on('message', function(msg) {
           console.log("Message from Proxy: ", msg);
           browserInstance.send(msg);
    });

    ws.on('close', function(){
          console.log("Ws Connection closed");
    });
    //next();
});

appForpage.use(express.static(__dirname + '/public/')); // index.html resides in public directory

appForpage.listen(5000)
app.listen(3000)