繁体   English   中英

(javascript) 无法返回在 Socket.on(event) 中收到的值

[英](javascript) Unable to return value received in Socket.on(event)

基本上我有一个将数据发送到服务器的客户端代码,服务器响应在客户端代码中调用 socket.on(event) 的数据。 在立即运行的 function 中,我可以记录接收到的数据,但我终生无法将其返回到外部。

function receive_data(){
    socket.off('Sent_data_to_client').on('Sent_data_to_client',(player_info));
    console.log(player_info)
}

如果我尝试记录 player_info,它会告诉我它是未定义的“未捕获(承诺)ReferenceError:player_info 未定义”。 我想返回 player_info 作为 receive_data function 的结果,但它是未定义的。

我是 javascript 和 Socket.Io 的新手,对于任何明显的错误我深表歉意。

JS 中的 Sockets 不是这样工作的。 有一个具体的事件。

https://nodejs.org/api.net.html#new.netsocketoptions

这是Node JS的文档,不过没关系,因为Node JS是基于“V8引擎”的,也就是一样。

正如您在文档中看到的那样,它表明套接字可以处理一系列事件,其中包括“数据”,调用回调 function,您可以在其中为代码实现必要的逻辑。 在这种情况下,例如:

const net = require('net');

const socket = new net.Socket();

// Open a socket connection with example.com
socket.connect(80, 'example.com', () => {
  console.log('Connected');
});

socket.on('data', (data) => {
  console.log(`Recived: ${data}`);
});

socket.on('error', (error) => {
  console.log(`Error: ${error}`);
});

您应该更改 function 定义以接受参数,这将是服务器发送的数据。

function receive_data(){
    socket.off('Sent_data_to_client').on('Sent_data_to_client', function(player_info) {
        console.log(player_info);
        return player_info;
    });
}

暂无
暂无

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

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