SLChat

Language License TravisCI Codebeat

SLChat 是 Kitura-WebSocket 的一个简单扩展。允许您将聊天系统与您的客户端集成。

🔧 安装

将以下依赖项添加到您的 Package.swift 文件中

.package(url: "https://github.com/shial4/SLChat.git", from: "0.1.1"),

💊 用法

1 导入

开始使用 SLChat 库非常容易!首先您需要导入库,通过将此代码添加到您的 Swift 文件的顶部

import SLChat

2 初始化

设置 SLChat 最简单的方法是创建对象,例如在您的 main.swift 文件中。 像这样

let slChat = SLService<Client>()

与 Kitura 完美配合。

WebSocket.register(service: SLService<Client>(), onPath: "slchat")

3 配置

SLService 实例需要您的客户端模型。如果您不使用它,您可以简单地为此声明一个空的结构体

struct Client: SLClient {}
let chat = SLService<Client>()

SLClient 协议

此协议中的每个函数都是可选的。 这意味着 SLClient 提供默认实现。 但是,您也可以根据自己的需要覆盖它。 为什么要这样做? 为了提供额外的功能。 例如:为您的消息历史记录数据库存储,处理 Data 消息,为连接或断开连接等状态消息提供接收者。 还有更多功能!

extension SLClient {
    static func receivedData(_ message: Data, from: WebSocketConnection) -> Bool { return false }
    static func sendMessage(_ message: SLMessage, from client: String) -> [String] { return message.recipients }
    static func statusMessage(_ command: SLMessageCommand, from client: String) -> [String]? { return nil }
}

通过 sendMessage 协议方法发送消息。 提供 SLMessage 对象,该对象包含从套接字消息中解析的接收者。 这可以是聊天室 ID 或应向其传递消息的简单客户端 ID。

接收者是由您定义的字符串。 因此,您可以识别您的目标客户端,消息将传递给这些客户端。 它们可以是简单的其他客户端 ID 或房间 ID。

SLService

工作方式非常简单。 首先,您应该了解的是:发送到客户端的消息如下所示:M;MESSAGE-OWNER-ID;{MESSAGE-RECIPIENT-ID, CAN_BE_CHAT_ROOM_ID, CAN_BE_OTHER_CLIENT_ID};My message content sent to others 在这种情况下,第一个字符 M 是消息的类型。 后面是负责发送此消息的客户端 ID,接收者放在 {} 内,最后一部分是消息内容。 所有部分都用 ; 连接。 此消息模型将传递到您的客户端应用程序。 ``

状态消息(已连接或已断开连接)是不同的,它们只有空的接收者闭包 {}。 如果您收到消息:C;MESSAGE-OWNER-ID;{}; 那么应该通知与消息所有者相关的所有客户端。

除了接收消息,您也将发送消息! 您的消息应如下所示:M{RECIPIENT_1;RECIPIENT_2;RECIPIENT_3}My message content sent to others 与接收到的消息类似,第一个字符描述消息类型。 后面是放在 {} 内并用 ; 分隔的接收者,最后一部分是消息内容。

要从客户端打开套接字连接,请在以下地址注册您的 WebSocket:ws:// + host + /slchat?OWNER-ID SLChat 使用路径组件来发送所有者 ID。

⭐ 贡献

欢迎为本项目做出贡献! :)

❓ 问题

您可以在 GitHub 上创建一个 issue。

📝 许可证

本项目已在 MIT 许可证下发布。