繁体   English   中英

如何从对象外部调用函数

[英]How to call a function from outside the object

我正在尝试在套接字和websocket之间建立代理。 我在套接字服务器上收到请求,我想将它们代理到websocket客户端,但是websocket.ws.send似乎未定义。 正确的做法是什么? 如何从对象外部调用ws.send()?

var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({port: 8001}),
var net = require('net')


websocket = wss.on('connection', function(ws) {
    ws.on('message', function(message) {
        console.log('received: %s', message);
    });
    ws.send("NEW USER JOINED");
});


var socketServer = net.createServer(function(socket) {
        socket.on("data", function(data){
                console.log("Received: "+data)
                websocket.ws.send("Message")
        });
});
socketServer.listen(1337, '127.0.0.1');

您的问题是ws是一个连接的单个Web套接字。 它不是websocket对象的属性,而是您定义的回调的参数。 每次有人连接时,您都会获得一个connection事件,该事件将执行您的回调,使您可以将函数绑定到message事件的特定Web套接字。

您需要将ws对象存储在套接字服务器可以访问的变量中,或者可以广播给所有客户端。

wss.clients.forEach(function each(client) {
   client.send(data);
});

如果您只有一个客户端,这将很好地工作,但是,如果您同时连接到websocket和套接字服务器,则需要使用一种在两者上都标识连接的方法,以便可以找到需要向其发送数据的websocket连接。 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM