gpt4 book ai didi

sockets - Chrome应用程序sockets.tcpServer无法接收数据

转载 作者:行者123 更新时间:2023-12-04 13:23:09 24 4
gpt4 key购买 nike

我尝试使用Chrome的sockets.tcpServer API与本地应用程序进行通信。这是我的代码的链接:http://pastebin.com/1mWXeZKr

我使用nc 127.0.0.1 7000测试服务器是否正常工作。但是,尽管我可以连接到服务器并从服务器接收消息,但是当我从客户端(nc)发送消息时,服务器没有收到任何消息。我不确定我是否正确使用了API。有人可以注意到代码中的任何错误吗?

这是代码片段:

function onAccept(info) {
if (info.socketId != serverSocketId)
return;
console.log("Client connected.");
// Start receiving data.
_stringToArrayBuffer("connected.\n", function(buf) {
chrome.sockets.tcp.send(info.clientSocketId, buf, function(info) {
if (info.resultCode != 0)
console.log("Send failed.");
});
});

chrome.sockets.tcp.onReceive.addListener(onReceive);
}

function onReceive(info) {
console.log("Data received.");
_arrayBufferToString(info.data, function(str) {
console.log(str);
});
}

更新:

好的,我找到了解决方案。请参阅下面的答案。

最佳答案

我找到了解决方案。默认情况下,套接字clientSocketId在创建时会暂停。在onAccept函数中,只需在添加chrome.sockets.tcp.setPaused(info.clientSocketId, false);监听器之后添加onReceive即可解决问题。

function onAccept(info) {
if (info.socketId != serverSocketId)
return;

chrome.sockets.tcp.onReceive.addListener(onReceive);
chrome.sockets.tcp.onReceiveError.addListener(function(info) {
console.log("Error: ", info);
});

chrome.sockets.tcp.setPaused(info.clientSocketId, false);

buf = str2ab("Connected.\n");
chrome.sockets.tcp.send(info.clientSocketId, buf, function(info) {
if (info.resultCode != 0)
console.log("Send failed.");
});
}

关于sockets - Chrome应用程序sockets.tcpServer无法接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22545574/

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