这是一个非常简单的基于 WebSocket 的 IRC WebClient/Server。
它包含一个小型聊天 web 应用程序作为前端(一个用纯 JavaScript 编写的单页 web 应用程序,没有框架),它包含一个使用 SwiftNIO IRC 客户端模块 的 WebSocket/IRC 桥接,以及一个小型 HTTP 服务器,用于交付 web 应用程序并充当 websocket 端点。
这个 WebClient 是一个常规的 Swift 包,可以导入到其他 Swift 服务器中!
从表面上看,它是一个非常简单的聊天 web 应用程序,具有对频道和直接消息的基本支持
有时一个实时演示安装运行在 http://irc.noze.io/ 上。 一旦滥用开始发生,我们可能不得不关闭它 :-) 如果它没有运行,并且你想试用它,只需在本地安装它,使用 MiniIRCd 只需要几分钟。
此模块包含中间部分,即 web 服务器。 它有两个用途
┌───────────────────────┐
HTML │ ┌─────────────────┐ │
┌───────JS──────────┼──│ NIO HTTP Server │ │
│ │ └─────────────────┘ │
│ │ │ │
▼ │ Upgrades │
┌──────────────┐ │ Connection │
│ │ │ │ │
│ WebBrowser │ │ ▼ │ ┌──────────────┐
│ │ WebSocket │ ┌─────────────────┐ │ │ │
│ JavaScript │◀────JSON───┼─▶│ NIO WebSocket │◀─┼─IRC──▶│ IRC Server │
│ WebApp │ │ └─────────────────┘ │ │ │
│ │ │ WebServer │ └──────────────┘
└──────────────┘ └───────────────────────┘
JavaScript web 应用程序嵌入到编译后的 Swift 模块中(使用 Makefile,所有资源都捆绑到一个 单个 Swift 源文件 中)。 然而,它也可以作为独立的 web 应用程序工作(你可以将 Client.html 拖到你的浏览器中)。
客户端应用程序位于 Sources/IRCWebClient/WebApp 中。
一个示例 Package.swift
导入必要的模块
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "MyOwnIRCServer",
dependencies: [
.package(url: "https://github.com/NozeIO/swift-nio-irc-webclient.git",
from: "0.7.0")
],
targets: [
.target(name: "MyIRCServer",
dependencies: [ "IRCServer", "IRCWebClient" ])
]
)
let webServer = IRCWebClientServer()
webServer.listen()
查看 Configuration 对象以获取支持的配置选项。
可以配置三个连接参数