Firefox 插件 - 套接字

Posted

技术标签:

【中文标题】Firefox 插件 - 套接字【英文标题】:Firefox plugin - sockets 【发布时间】:2010-09-06 00:21:07 【问题描述】:

我一直想要一种与服务器建立套接字连接并允许服务器操作页面 DOM 的方法。例如,这可以用在股票报价页面中,因此服务器可以在新报价可用时推送它们。

我知道这是 HTTP 请求/响应协议的经典限制(功能?),但我认为这可以作为 Firefox 插件实现(跨浏览器兼容性对我的应用程序并不重要)。 Java/Flash 解决方案是不可接受的,因为(据我所知)它们存在于一个盒子中并且不能与 DOM 交互。

谁能确认这是否在 Firefox 插件的能力范围内?有人已经创建了这个或类似的东西吗?

【问题讨论】:

【参考方案1】:

您可能想查看Comet,这是一个花哨的名称,表示服务器可以将更新推送到页面的长时间运行的 HTTP 连接。

【讨论】:

【参考方案2】:

应该是可以的。我开发了一个使用套接字连接到 TCP 服务器的 xulrunner 应用程序。扩展开发可能具有相同的功能。我使用了 mozdev 的库 - JSLib。具体查看networking code。有Firefox add-on for JSlib add-on for Firefox这一事实让人更有信心。

基本上,据我了解,套接字不是 javascript 的一部分,但通过 XPCOM,您可以像在任何 c/c++ 应用程序中一样获得原始套接字访问。

警告:JSLib 似乎没有受到太多关注,而且邮件列表非常稀疏。

【讨论】:

【参考方案3】:

Java/Flash 解决方案是不可接受的,因为(据我所知) 他们住在一个盒子里,不能与 DOM 交互。

Java 并非如此。您可以通过 JavaScript 与 Java 交互并进行 DOM 更改。

http://stephengware.com/proj/javasocketbridge/

在这个例子中,有两种 JavaScript 交互方法

发送:

socket_send("This was sent via the socket\n\n");

接收:

on_socket_get(message) more_code(message);

【讨论】:

【参考方案4】:

你可能想看看彗星

又名。 server push。这不会让服务器直接“更新”客户端页面,而是通过单个连接将所有新数据发送到页面。

当然,Firefox extension(以及 plugins,它们是二进制库,可以做任何其他应用程序可以做的任何事情)也可以使用套接字。见1、2。

【讨论】:

以上是关于Firefox 插件 - 套接字的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 扩展和 COM 组件之间的 IPC

AddressFamily.FireFox 在 .NET 套接字中指的是啥?

使用套接字进行进程间通信的限制是啥?

Jenkins SSH 插件/SSH 代理插件:异常:超时:未建立套接字

Phonegap/Cordova - 套接字插件最终得到: undefined is not a function in cordova.js

从 Firefox 扩展发送电子邮件