【问题标题】:UDP in Javascript for interprocess communication on localhostJavascript中的UDP用于本地主机上的进程间通信
【发布时间】:2015-06-04 03:47:32
【问题描述】:

是否有使用 Javascript 向本地端口发送 UDP 数据包(并从本地端口接收 UDP 数据包)的方法?

我不想运行 node.js,尽管那里有一个 datagram 对象。我使用的是 IE,所以不能使用 Mozsockets 或 chrome.udp.sockets 对象。

例如,我能否在 iFrame 中托管 swf 并使用 flash 从 javascript(通过 Flash)发送到本地端口?到目前为止,这是唯一的想法。

【问题讨论】:

  • 可以选择 ActiveX 吗? Java怎么样?您要使用它的页面是否也托管在 localhost 上?
  • 如果您可以接受传递字符串,那么 localStorage+"storage" 窗口事件是一种快速的本地解决方案。

标签: javascript sockets udp


【解决方案1】:

简短回答:不,出于安全原因,无法在 Javascript 中执行此操作。

长答案:一些插件支持 UDP 通信。例如,您可以使用 Flash 的 Adob​​e AIR 的DatagramSocket。如果您要与无法更改的现有 API 交互,这可能是您唯一的选择。

但是,如果您是从头开始构建此应用并打算将其部署到网络上,我强烈建议您考虑另一种传输方式。查看LocalStorageShared Workers 用于基于浏览器的IPC,Websockets 用于异步客户端-服务器通信,WebRTC 用于对等通信(尽管对该标准的支持仍在进行中) .这将使您能够像 Adob​​e drops flash support on the platform 一样支持 Apple 设备和 Linux,并提供比 Flash 或 Java 小程序更好的安全保证。

【讨论】:

  • shared workers 甚至比 localStorage 还要好,可惜 IE 还没有加入。很好的概述!
  • 有趣,我不知道您可以在网络工作者之间共享上下文。我会把这个添加到答案中。
  • 您的长答案可能是错误的:“DatagramSocket 类只能在 Adob​​e AIR 应用程序中使用,并且只能在应用程序安全沙箱中使用。”
  • 使用共享工作者而不是 localStorage 意味着您不必应对同步文件 IO 开销、将所有数据转换为字符串、限制为 5mb 消息或冒险写入永久本地数据。哦,性能也更好,因为所有东西都一直保存在 RAM 中。 IE 也可以使用剪贴板、FSO 来访问临时 RAM 磁盘,本地 IIS 服务器可以使用 Application 对象通过本地 HTTP 连接共享 RAM 保存的状态。
  • localStorage 的实现通常会读取和写入内存中的缓存,因此您不会每次 get 或 setItem() 都会访问磁盘。也就是说,这显然是一个 hack。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多