gpt4 book ai didi

javascript - 如何从对象外部调用函数

转载 作者:行者123 更新时间:2023-12-02 14:36:11 25 4
gpt4 key购买 nike

我正在尝试在套接字和网络套接字之间建立代理。我在套接字服务器上收到请求,并且想将它们代理到 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 事件,该事件将执行您的回调,从而允许您将一个函数绑定(bind)到 message 事件的特定 Web 套接字。

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

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

如果你只有一个客户端,这将工作正常,但是如果你有多个连接到 websocket 和 socket 服务器,那么你需要使用一种方法来识别两者上的连接,以便你可以找到你需要的 websocket 连接发送数据至。

关于javascript - 如何从对象外部调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37434093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com