如何将 HTML5 WebSockets 用于 Chrome 扩展

Posted

技术标签:

【中文标题】如何将 HTML5 WebSockets 用于 Chrome 扩展【英文标题】:How to use HTML5 WebSockets for Chrome Extensions 【发布时间】:2011-06-13 20:36:38 【问题描述】:

我正在尝试使用 html5 WebSockets 创建一个 chrome 扩展,但找不到一个清晰的示例。我有几个问题希望社区能够以简洁明了的方式为我回答。

    WebSocket 服务器,可以添加到 Google Chrome 扩展中吗?无论哪种方式,有人可以确切地告诉我制作服务器需要什么或包含指向清晰示例的体面链接吗? 当连接到 WebSocket 服务器时,每个人总是有类似 ws://localhost:port 号的东西。 ws 是必需的还是有什么意义?我不知道这是否是一个文件位置或什么。并且只是为了确保 IP 地址和端口号是您的服务器所在的位置以及它正在侦听的端口对吗? http://www.pusher.com/ 上的 pusher 之类的网站只是在两个不同设备之间发送通信的一种方式,您仍然需要服务器,或者这是否会替换服务器/可以替换服务器。

我已经在 Google 上进行了很多搜索,所以我对这个话题一无所知。我只是不了解所有不同的东西,websocket API 没有给出任何功能的定义,也没有真正解释如何使用它。

我查看的一些链接:http://dev.w3.org/html5/websockets/、http://jnext.org/index.html、http://www.pusher.com/、http://jwebsocket.org/、http://joshuakehn.com/blog/view/2/WebSocket-Tutorial-with-Node-js

我需要一些不需要安装到计算机上的东西。所有服务器/客户端/编码都需要是可以放入 chrome 扩展的 javascript。感谢任何可以帮助我的人。

【问题讨论】:

你觉得你的问题得到了充分的回答吗?如果没有,您是否觉得缺少什么来完全回答您的问题? 仍然无法在 chrome 扩展中运行 websocket 服务器。甚至chrome.sockets.tcp 缺少listen 方法。 【参考方案1】:

    您似乎是在说您想在客户端上运行一个 websocket 服务器?那是不可能的。您无法从浏览器启动用户计算机上的进程。

    ws 表示使用 web sockets 协议,就像 http 表示使用超文本传输​​协议或 ftp 表示使用文件传输协议一样。

    Pusher 是一项为您托管和运行 Web 套接字服务器的服务。您也可以编写自己的 Web 套接字服务器并将其安装在您自己的服务器上。

【讨论】:

好吧,我不希望客户端和服务器都在扩展中,我希望服务器在扩展中。客户端将在其他地方尝试访问扩展程序。 你不走运。即使您可以在用户的​​机器上安装服务器(您不能),您也必须处理诸如端口打开以及能够通过其防火墙接受传入连接等问题。您需要拥有 Web 套接字服务器位于其他地方,然后他们的浏览器可以通过 JavaScript web socket api 连接到服务器。【参考方案2】:

    没有用于将 WebSockets 服务器创建为 Chrome 扩展的 API。 websockify 包含一个用于轻松创建 WebSocket 服务器的 python 类。请参阅tests/echo.py 示例。

    ws:// 前缀表示未加密的 WebSockets 连接。同样,wss:// 用于加密连接(使用 TLS/SSL)。一个或另一个是必需的。

    Pusher 是一种 WebSockets 服务,它在原始 WebSockets 之上提供一个层,为您进行会话管理。您不需要单独的 WebSockets 服务器。

【讨论】:

所以如果我要注册 Pusher,我就不需要托管服务器了吗? Pusher 会接受来自外部来源的消息并将其发送到扩展程序? “外部来源”仍然需要是某种 WebSockets 客户端(浏览器或其他)。但是,是的,它可以向 Pusher 发送消息,然后将消息发送给其他连接的客户端(浏览器)。 IE。您可以有一个发送股票价格的特殊客户端,而其他客户端可以连接并接收这些消息。请注意,如果您希望每天拥有超过 20 个连接(客户端)或 100,000 条消息,则 Pusher 是商业用途。

以上是关于如何将 HTML5 WebSockets 用于 Chrome 扩展的主要内容,如果未能解决你的问题,请参考以下文章

.NET 的 HTML5 WebSockets 客户端

用于asp.net MVC聊天应用程序的signalR vs html5 websockets

是否有 HTML5 WebSockets 的 Java 小程序实现?

我可以将 html5 Websockets 与 Windows 域身份验证一起使用吗?

如何在 sharedworkers 中使用 html5 websockets

带有 C# 实现的 ASP.NET HTML5 WebSockets