【发布时间】:2014-04-25 01:01:34
【问题描述】:
我正在创建一个适用于 irc 协议的 chrome(打包)应用程序。所以,这就是我的听众的样子:
chrome.sockets.tcp.onReceive.addListener(function(info){
console.log("received data");
info.data = ab2str(info.data);
console.log(info);
})
ab2str 应该将 ArrayBuffers 转换为字符串。我已经从 html5rocks 复制了它:
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}
但是在端口 8002 上连接到irc.freenode.net,我在日志中得到奇怪的字符串,并且在某些情况下,我得到以下错误:
Error in event handler for sockets.tcp.onReceive: RangeError: bofyshould be a multiple ofe
at new Uint16Array (native)
at ab2str (chrome-extension://jkmacdefiplofpdmgimbaobepnigcchm/js/protocol.js:80:41)
at chrome-extension://jkmacdefiplofpdmgimbaobepnigcchm/js/protocol.js:73:15
...
大部分堆栈跟踪看起来像内部 chrome 代码,所以我把它省略了。
我做错了什么?在发送 USER 和 NICK 消息之前,我是否应该不监听任何数据?
我已确保我在不需要 ssl 的端口上连接到 freenode,如 this page about freenode's servers 中所述
【问题讨论】:
标签: javascript sockets google-chrome irc google-chrome-app