浏览器 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 连接的主要内容,如果未能解决你的问题,请参考以下文章

C#中的IRC库[关闭]

为啥我的 IRC 机器人无法连接?

C# IRC 和 Twitch 空闲断开连接?

iOS 中的 IRC /TOPIC 命令修剪问题

Python:检查 IRC 连接是不是丢失(PING PONG?)

Winsock - 为啥 ZNC(和 IRC 保镖)不接受我的 winsock 连接?