【问题标题】:Is it possible to have an IRC client using websockets running your own IRC server without a websockets gateway?是否可以让 IRC 客户端使用 websockets 运行您自己的 IRC 服务器而无需 websockets 网关?
【发布时间】:2015-09-21 05:51:27
【问题描述】:

我正在计划建立一个 IRC 网络并一直在探索选项。我打算使用Inspircd IRC Server。以及运行meteor 的网络服务器。是否可以使用 websockets 构建 web IRC 客户端而不使用 webscokets 网关(以减少 web 服务器上的负载)并直接连接到 IRC Inspircd 盒子?

其次,如果以上回答为“是”,IRCclient <-> IRCServerIRCclient <-> WebScoketGateway (/webserver) <-> IRC Server 关系的优缺点是什么。

我看到大多数涉及节点或流星的模块(包括socket.io)都使用WSGI,这是为什么呢?我在这里遗漏了什么吗?

请注意,在这种情况下,IRC Server 和 Webserver 都是由我运行的,因此有可能让浏览器认为它们是同一个框。

【问题讨论】:

  • 您可以设置 Flash 套接字以与兼容的 IRC 服务器通信,因为 Flash 不受域限制,例如,请参阅 github.com/atheme/iris/pull/41

标签: node.js sockets meteor websocket irc


【解决方案1】:

是否可以使用 websockets 构建 web IRC 客户端而不使用 webscokets 网关(以减少 web 服务器上的负载)并直接连接到 IRC Inspircd 盒子?

没有。 WebSockets 是 HTTP 内部的一个层,即客户端发送带有 Upgrade 标头的 HTTP 请求,服务器以确认升级请求的 HTTP 响应进行响应。数据以二进制消息的形式进行交换(带有自己的框架),并且通常还使用一些密钥进行异或运算。

因此,您不能向非 WebSocket 服务器发送任意数据,也不能发送 IRC 数据,但您需要一个网关来将 WebSocket 握手和帧转换为普通 TCP。

【讨论】:

  • 所以这意味着中间应该有一个WebSocket网关。不会增加很多开销吗?至于安全性,我同时拥有网络服务器和 irc 盒子,所以这应该可以通过某种跨域访问来克服网络服务器的开销?
  • @user537051:如果您使用 WebSockets 而不是普通套接字,那么由于 WebSockets 的工作方式,您将有开销。即使您跨域执行此操作,您仍然会有相同的开销,只是在另一个地方。
【解决方案2】:

UnrealIRCd 4.0.10 及更高版本support the WebSocket protocol(ws:// 和 wss://)。 WebSocket 帧交换与标准 IRC 连接相同的消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 2021-12-15
    • 2013-11-30
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多