【问题标题】:Newbie: Javascript, Jquery Classes and Objects新手:Javascript、Jquery 类和对象
【发布时间】: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


【解决方案1】:

背景

ECMAScript 是一种语言,而 javascript 是用于特定主机的 ECMAScript 实现的通用名称(注意 JavaScript™ 是 Oracle Corporation 的商标)。

ECMAScript 本身做的很少,它甚至没有输入或输出的机制,它必须由宿主提供。对于 WebSockets,如果主机支持它们,那么它将实现WebSockets API

当您通过new WebSocket(...) 创建WebSocket 时,主机会返回一个实现该接口的主机对象。对象的状态会随着其环境而变化(连接、打开、关闭、关闭),并且会在某些事情发生时调度事件。

当socket成功连接到服务器时,会在socket上派发一个open事件,这样如果有onopen监听器就会响应通过由 open 处理程序调用事件。 errorclose 事件也有关联的 on* 处理程序。

回答

然后如何以及谁将调用 ServiceA.onopen、Service.onmessage 和 其他功能 - 当数据到达这些套接字时?

实现接口的主机环境完成了所有这些工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多