SwiftNIO IRC 服务器

Swift4 Swift5 macOS tuxOS Travis

SwiftNIO IRC 是一个基于 SwiftNIO 的 Internet Relay Chat 协议实现,可以作为构建你自己的 IRC 服务器和客户端的基础,并提供了一个示例 IRC 服务器,以及一些用 Swift 编程语言编写的 IRC 机器人。

SwiftNIO IRC 服务器是一个基于 SwiftNIO IRC 构建 IRC 服务器的框架。

想构建一个客户支持聊天系统吗?而且你的客户恰好是 80 年代和 90 年代初的 Unix 人士?真是绝配!

这个 Swift 包包含可重用的 IRCServer 模块,以及 MiniIRCd,一个小型且可工作的 IRC 示例服务器。

MiniIRCd 也会配置、嵌入和运行

它看起来像什么

表面上,它是一个非常简单的聊天 Web 应用程序,具有对频道和直接消息的基本支持

有时,一个在线演示安装在 http://irc.noze.io/ 上运行。

除了 Web 前端之外,MiniIRCd 还嵌入了一个实际的 IRC 服务器,也就是说,你可以使用像 MutterIrssiTextual 这样的原生客户端连接到服务器。

概述

作为此软件包一部分的 IRCServer 模块,仅链接到 SwiftNIO IRCNIOIRC 协议模块。

另一方面,包含的 MiniIRCd 工具还会启动 IRC/WebSocket 网关,包含 Web 应用程序并启动 ElizaBot

                             ┌──────────────────────────────────────────────────┐
                             │ ┌───────────────────────┐       ┌──────────────┐ │
               HTML          │ │  ┌─────────────────┐  │       │    Eliza     │ │
        ┌───────JS───────────┼─┼──│ NIO HTTP Server │  │       │     Bot      │ │
        │                    │ │  └─────────────────┘  │       └──────────────┘ │
        │                    │ │           │           │               │        │
        ▼                    │ │       Upgrades        │              IRC       │
┌──────────────┐             │ │      Connection       │               │        │
│              │             │ │           │           │               ▼        │
│  WebBrowser  │             │ │           ▼           │       ┌──────────────┐ │
│              │  WebSocket  │ │  ┌─────────────────┐  │       │              │ │
│  JavaScript  │◀────JSON────┼─┼─▶│  NIO WebSocket  │◀─┼─IRC──▶│  IRC Server  │ │
│    WebApp    │             │ │  └─────────────────┘  │       │              │ │
│              │             │ │       WebServer       │       └──────────────┘ │
└──────────────┘             │ └───────────────────────┘                        │
                             │                                                  │
                             │       All Services Run as Part of MiniIRCd       │
                             └──────────────────────────────────────────────────┘

运行服务器

要开始使用,只需检出存储库并调用 swift run

helge@ZeaPro swift-nio-irc-server (develop)*$ swift  run
Fetching https://github.com/apple/swift-nio.git
...
Compile Swift Module 'miniircd' (2 sources)
Linking ./.build/x86_64-apple-macosx10.10/debug/miniircd
 __  __ _       _ _____ _____   _____
 |  \/  (_)     (_)_   _|  __ \ / ____|   Swift IRCd
 | \  / |_ _ __  _  | | | |__) | |
 | |\/| | | '_ \| | | | |  _  /| |        Port: 6667
 | |  | | | | | | |_| |_| | \ \| |____    PID:  2343
 |_|  |_|_|_| |_|_|_____|_|  \_\\_____|

Ready to accept connections on: [IPv4]0.0.0.0:6667
IRCWebClientServer running on: [IPv4]0.0.0.0:1337
Eliza is ready and listening!

然后,你可以通过 IRC 连接到 localhost:6667 或通过 Web 前端连接到 https://:1337/

使用 Swift Package Manager 导入模块

一个导入必要模块的示例 Package.swift

// swift-tools-version:5.0

import PackageDescription

let package = Package(
    name: "MyOwnIRCServer",
    dependencies: [
        .package(url: "https://github.com/NozeIO/swift-nio-irc-server.git",
                 from: "0.5.0")
    ],
    targets: [
        .target(name: "MyOwnIRCServer",
                dependencies: [ "IRCServer" ])
    ]
)

ZeeZide 带给您。我们喜欢 反馈、GitHub 星星、酷炫的 合同工作,以及你能想到的任何形式的赞扬。

NIOIRC 是 2016 年 Noze.io miniirc 示例的 SwiftNIO 端口。