我正在使用NW.js,以便创建一个本地websocket-client。我的原则是有效的,目前我正在重构我的代码以使其更加面向对象。
Websockclient.prototype.connect = function() {
if (!("WebSocket" in window)) {
alert("WebSocket is NOT supported!");
} else {
uri = "ws://" + this.host + ":" + this.port;
this.ws = new WebSocket(uri);
this.ws.onopen = function(evt) { this.onOpen(evt); }
}
};
Websockclient.prototype.log = function(message) {
if (this.logEn == true) {
console.log(message);
}
};
Websockclient.prototype.onOpen = function(evt) {
this.log("connected");
this.ws.send("Client says Hi!");
};
连接打开正确,但Websockclient.prototype.onOpen
函数调用失败了。错误输出如下:
[31910:31910:0530/115015:错误:edid_parser.cc(181)]无效的EDID: 人名不可读的名字 镀铬的扩展://oimdoepkkglchafiooagncfokloigedg/app/lib/websockclient.js:29 this.ws.onopen = function(evt){this.onOpen(evt); }
TypeError:this.onOpen不是函数 在WebSocket.ws.onopen(chrome->> extension://oimdoepkkglchafiooagncfokloigedg/app/lib/websockclient.js:29:47)
看起来我在下面有一个错误:
this.ws.onopen = function(evt){this.onOpen(evt); }
(注意:这是文件websockclient.js中第29行)
我认为这项任务不正确,但我有点卡在这里。有人可以请解释我在这里缺少的东西。
答案 0 :(得分:0)
thx to @ Pimmol的评论我已经解决了这个问题,如下所示:
this.ws.onopen = function(evt) { this.onOpen(evt); }
需要更改为以下内容:
this.ws.onopen = this.onOpen.bind(this);
有关详细信息,请参阅以下文档: