Vaper로 웹소켓을 사용하는 채팅 앱을 제작한다.

5856 단어 SwiftVapor
물론 Vappor에서도 웹소켓을 사용할 수 있다.기능이 매우 적기 때문에 매우 간단하다.
이번에는 Vaper에서 웹소켓을 사용해 간단한 채팅 앱을 만들었다.
공식Vapor WebSocket
Vapor 프로젝트를 만듭니다.
$ vapor new websocketTest
$ cd websocketTest
$ vapor -y xcode  // 必要あれば
$ vapor build
$ vapor run
configure.swift 속성에 WebSocket을 저장하는 배열을 만듭니다.
configure.swift
var websocketClients: Dictionary<String, [WebSocket]> = [:]
configure WebSocketServer의 설정을 메서드에 기술합니다.localhost:8080/socket/xxxx는 (xxxx는 방의 이름)에 보내는 문자열을 같은 방 연결 중인 고객에게 전달합니다.
configure.swift
// WebSockets
let wss = NIOWebSocketServer.default()
wss.get("socket", String.parameter) { ws, req in
    let room = try req.parameters.next(String.self)
    if websocketClients[room] == nil {
        websocketClients[room] = []
    } else {
        websocketClients[room] = websocketClients[room]!.filter({
            !$0.isClosed
        })
    }
    websocketClients[room]!.append(ws)
    ws.onText { ws, text in
        for client in websocketClients[room]! {
            if !client.isClosed {
                if ws === client {
                    print("slip sender")
                } else {
                    client.send(text)
                }
            }
        }
    }
}
services.register(wss, as: WebSocketServer.self)
wsta라는 WebSocket 클라이언트를 사용하여 디버깅을 수행했습니다. 
wsta : A CLI development tool for WebSocket APIs
설치 방법
$ brew tap esphen/wsta https://github.com/esphen/wsta.git
$ brew install wsta
산토스와 다구 3인조의 조개껍질을 통해 카비곤이라는 방을 방문한다.다그 3인조의 케이스에서 보낸 문자열이 세인트 데스의 케이스에 표시됩니다.
$ wsta ws://localhost:8080/socket/kabigon

좋은 웹페이지 즐겨찾기