cha*_*lan 6 sockets google-chrome-extension google-chrome-app
我尝试使用Chrome的sockets.tcpServerAPI与本地应用程序进行通信.这是我的代码的链接: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);
});
}
Run Code Online (Sandbox Code Playgroud)
更新:
好的,我找到了解决方案.请参阅以下答案.
cha*_*lan 15
我找到了解决方案.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.");
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |