我有一个Node.js和React.js应用程序,分别是服务器和客户端。我通过socket.io
在它们之间发送数据,我试图实现acknoledgement,但我收到一个错误,说它已经超时:
Error: operation has timed out
at Timeout._onTimeout (C:\Project\gateway\node_modules\socket.io\dist\broadcast-operator.js:137:30)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7)
下面是我的服务器代码,message变量打印Error: operation has timed out
socket.emit((topic, message),function(message) {
console.log('GOT MESSAGE');
console.log(message);
});
下面是我的客户端代码:
ioClient.on('triton/acs', (data, callback) => {
callback("Message for server")
}
型
为什么这是不工作,如何修复它?
1条答案
按热度按时间tpgth1q71#
正如@darvine提到的,没有太多的代码来了解如何实现socket.io服务器端和客户端,但是,从我上面看到的,我尽我所能地回答你的问题,因为我看到了一些语法错误。
您的后端代码:
看起来您没有建立到客户端的连接。您可以通过执行以下操作来实现。另外,socket.emit正在向客户端发送数据。(.emit中没有回调函数)。您将数据作为第二个参数发送。如果您想从客户端接收数据,则使用.on('listener',cb)。请参阅以下内容;
在前端,适当地提供套接字示例是很重要的。我将使用API。有关这方面的更多信息,请参见this article。您可以在提供程序中 Package 组件,并访问套接字示例。同样,在前端区分.emit和.on也很重要。如果您想将数据发送到后端,你使用.emit(没有回调)。如果你从后端接收数据,你使用.on('listener',cb)。
最后,react要求你在localhost上运行时设置代理服务器,你可以在package.json文件中设置,如下图所示: