【发布时间】:2017-02-04 10:36:46
【问题描述】:
我对javascript中事物的机制和层次结构感到困惑,阅读很少的链接和页面正在添加到它们中。
有various ways to create objects in Javascript。我感到困惑的是:
我有 3 个 websocket 说 WSServiceA、WSServiceB、WSServiceC :这些是 3 个不同的套接字,提供不同的数据,但数据结构是相同的。使用一个简单的功能,我正在更新网页中的 3 个表格。
每个都有 onopen、onclose 和 onmessage 函数,所以我简单地将相同的代码复制了 3 次,如下所示:
WSServiceA.onmessage(){}
WSServiceB.onmessage(){}
WSServiceC.onmessage(){}
如果我创建这样的东西:
function CreateService(Service, WSAddress){
this.service=Service;
this.WSAddress = WSAddress;
this.websocket = new WebSocket(this.WSAddres);
this.onopen = function(event){ Send some message }
this.onmessage = function(event){ Update Table A}
}
之后我会创建
ServiceA = CreateService("A", "ws://192.168.100.1.1:10001");
ServiceB = CreateService("B", "ws://192.168.100.1.2:10001");
ServiceC = CreateService("C", "ws://192.168.100.1.3:10001");
那么当数据到达这些套接字时,如何以及谁将调用 ServiceA.onopen、Service.onmessage 和其他函数?它会被调用吗?在函数内部创建的东西应该只在该函数中可见 - 我无法理解流程和链接。可能我错过了一些关键概念,或者这不应该工作。
【问题讨论】:
-
在onopen函数中你应该可以通过引用
this来访问socket,如果没有,你可以用bind创建一个函数来绑定它到一个对象 -
也许以The WebSocket API spec开头。如果您不了解事件,也许quirksmode: Introduction to Events 会有所帮助。
-
这些
.on* 是事件监听器 当相应的事件触发时,它们将监听它并执行回调函数。
标签: javascript websocket