我正在编写一个单页 ws++ 站点,我想先将我的代码按“页面”分组(我想我需要一个新词,因为它从不回传)然后按部分然后按概念等。

我想在我的代码中拆分 WebSocket.onmessage ,就像 $('#someElement') 可以不断地将 click(function(){}) 之类的事件添加到其中一样。

这可以用 WebSocket.onmessage(function(){}) 完成吗?如果是这样,如何?

作为 some jQuery programmers happily know ,可以最初设置一个事件,然后将其添加到整个 js 的多个位置。这是我最喜欢 js 的地方,即“只要它按顺序放在任何地方”的能力。至少对我来说,这使代码组织变得更加容易。

使用 WebSockets ,到目前为止,我的 Action 客户端是使用 WebSocket.onmessage() 处理程序,因为 WebSocket.send() 可以在任何地方使用,并且实际上只是将 js 数据移植到服务器。
onmessage() 现在拥有我的页面,因为它中的任何内容都会启动大多数主要操作,例如在出现“登录成功”类型的消息时将登录屏幕淡出到第一个内容屏幕。

根据我对 js 的有限理解,onmessage() 处理程序必须在一个地方设置。在我更改了它周围的 js 之后,继续向后滚动/切换到另一个文件以对其进行更改是很痛苦的,很远很远。

如何在 js 的多个位置添加到 WebSocket.onmessage() 处理程序?

最佳答案

您可以创建一个包装器,它将自行处理 WS 事件。请参阅此示例 CoffeeScript:

class WebSocketConnection
  constructor: (@url) ->
    @ws           = new WebSocket(@url)
    @ws.onmessage = @onMessage
    @callbacks    = []

  addCallback: (callback) ->
    @callbacks.push callback

  onMessage: (event) =>
    for callback in @callbacks
      callback.call @, event

# and now use it
conn = new WebSocketConnection(url)
conn.addCallback (event) =>
  console.log event

关于javascript - 添加到 WebSocket.onmessage() 就像 jQuery 添加到事件一样?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17503771/

10-11 23:12