[英]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.