2012-02-26 25 views
2

我想用chrome浏览器作为 数字标牌的软件技术平台。要强制Chrome浏览器接收并执行任何自定义的自定义命令(例如,创建一个新选项卡并查询某个网页/ url的内容)我需要运行浏览器作为服务器 收听某些网络端口。如何将Chrome扩展作为Web套接字服务器运行?

什么是使用websockets,server.io等最好的方法/技术?

+0

也许这有助于:http://stackoverflow.com/questions/4262543/what-are-good-resources-for-learning-html-5-websockets – 2012-02-26 13:55:15

+1

你可以依靠铬有网络访问?通过浏览器和控制器都连接到的websocket服务器代理请求会更容易,而不是试图将Chrome变成websocket服务器。 – abraham 2012-02-26 14:37:16

回答

0

也许你可以通过NPAPI来实现例如Node.js,并让它工作......或者别的东西。

如果你使用别的东西,会更好,因为谷歌手动控制所有NPAPI扩展。

+0

Thanx,在同一台机器上运行NodeJS作为代理服务器和chrome websocket客户端是个不错的主意。我希望可以用socket.io和/或websockets来完成。如果有80%的便携式解决方案可能可以移植到Firefox,那将是非常好的。 – 2012-02-26 15:23:22

+0

我不是100肯定,但...如果你设置节点作为代理,并写js可以与所有不同的浏览器交谈,你应该可以在不同的浏览器中使用大部分代码。由于NPAPI得到广泛支持。 – Mattias 2012-02-26 15:32:04

1

NPAPI是做你想做的事情的唯一方法,不足以从源头上彻底修改和编译Chromium。如果控制Chrome的客户端在浏览器中,那么将WebSocket库打包为NPAPI插件可能是您最好的选择。如果你的客户端是桌面应用程序,打包普通的TCP库应该就足够了。

但是,NPAPI具有相当陡峭的学习曲线,所以如果您可以提供帮助,我不建议使用它。如果可能的话,只需让Chrome建立一个连接中央服务器的连接(例如使用Socket.io)即可。您的客户端也可以连接到该服务器并使用它将命令转发到您想要远程控制的Chrome实例。

因此,而不是:

[控制客户端] ---> [铬]

你可以使用:

[铬] - > [myserver.example.net] < --- [控制客户端]

如果您的系统要求要求独立于互联网(即,Chrome不会始终访问特定的外部服务器,如myserver.example.net,但仍必须接受本地客户端网络),那么你可以运行e中间服务器与您正在控制的Chrome浏览器位于同一台计算机上。

+0

难道你不能只使用websockets [Chrome] ---> [控制客户端(websocket服务器)] ...一旦连接打开,它应该是双向的? – 2012-04-13 12:56:39

+0

当然,只要控制客户端总是可以在advnace中已知的一致的网络位置访问,也许可以通过动态DNS访问,那么这是完全可行的,以便Chrome始终能够访问它。我的解决方案与您的解决方案非常相似,涉及一个不移动的中间服务器,它允许控制客户端移动并从事先未知的位置连接。 – apsillers 2012-04-14 03:08:37