SLChat 是 Kitura-WebSocket 的一个简单扩展。允许您将聊天系统与您的客户端集成。
将以下依赖项添加到您的 Package.swift
文件中
.package(url: "https://github.com/shial4/SLChat.git", from: "0.1.1"),
开始使用 SLChat 库非常容易!首先您需要导入库,通过将此代码添加到您的 Swift 文件的顶部
import SLChat
设置 SLChat 最简单的方法是创建对象,例如在您的 main.swift
文件中。 像这样
let slChat = SLService<Client>()
与 Kitura 完美配合。
WebSocket.register(service: SLService<Client>(), onPath: "slchat")
SLService
实例需要您的客户端模型。如果您不使用它,您可以简单地为此声明一个空的结构体
struct Client: SLClient {}
let chat = SLService<Client>()
此协议中的每个函数都是可选的。 这意味着 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。
工作方式非常简单。 首先,您应该了解的是:发送到客户端的消息如下所示: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 许可证下发布。