浏览器 JavaScript 应用 IRC 连接
Posted
技术标签:
【中文标题】浏览器 JavaScript 应用 IRC 连接【英文标题】:Browser JavaScript app IRC connection 【发布时间】:2015-06-23 00:06:05 【问题描述】:提前感谢您的帮助!
无论如何,我希望我的 javascript 应用程序能够“连接”或以其他方式“与”IRC 进行“通信”。
(我需要它在浏览器中运行,所以没有依赖于 npmjs 的解决方案,是的,我已经尝试过 Browserify,但是很多东西似乎是不可浏览的,所以请不要建议使用 Browserfiy-相关方法,除非您绝对确定)
在 JavaScript 中直接“连接”到 IRC 似乎并不容易或者不可能,所以我很乐意使用其他即使更冗余的通信方法,包括使用其他语言可以如果可能,请使用浏览器内,例如 Java 或 php。
我愿意接受任何个建议!非常感谢!
【问题讨论】:
单独使用浏览器 JavaScript 是不可能的,Java 小程序早已死去,PHP 也不能在浏览器中使用。 Flash 可能会做到这一点,但使用某种服务器端可能会更好。WebSocket
API 应该可以实现,但我不知道目前有任何库可以在 JavaScript websockets 之上实现 IRC 协议。
@PatrickRoberts 不可能,你需要一个所有主流浏览器都提供的“原始”TCP 套接字,但仅限于特权模式(扩展)。
This library uses Node.js TCP sockets,所以如果你精通 Node.js,你可以将它移植到 WebSocket API。
@PatrickRoberts 那行不通。 WebSockets 不是 TCP 套接字;它们只能用于与 WS 服务器通信,即使那样也只能在同源下。
【参考方案1】:
html5 通过 WebSocket 协议引入了保持连接,现在(HyBi06,WS 版本 13)几乎被任何设备实现和接受,并且非常稳定。问题是 IRC 没有 WebSocket 通信协议。
我构建的解决方案是创建一个 WebSocket-server,它为每个客户端创建到 IRC-server 的原始连接并充当中介。每个客户端都运行一个我已经开发的 IRC-bot,它将来自服务器的消息转换为事件,这意味着我必须实现我想要传递到网站的所有事件。
【讨论】:
【参考方案2】:的确,IRC 本身不能直接与 Websockets 通信,但幸运的是 IRC 服务器,例如 UnrealIRCd,已经在其末端开始adopting Websockets,因此在许多情况下不再需要手动隧道或中介!
作为概念验证,我编写了一个basic browser-only Javascript IRC client,它直接连接到支持 Websocket 的 IRC 服务器。 Demo
在提出最初的问题多年后,情况正在改善。
【讨论】:
以上是关于浏览器 JavaScript 应用 IRC 连接的主要内容,如果未能解决你的问题,请参考以下文章