Socket.IO-Client-Swift とは
「Socket.IO-Client-Swift」とは、Socket.IO 公式の Swift 用ライブラリのようです。
クライアント側のプロジェクトを作成
プロジェクトの雛形を作成
Swift Package Manager を使います。
$ mkdir client
$ cd client
$ swift package init --type executable
Creating executable package: client
Creating Package.swift
Creating .gitignore
Creating Sources/
Creating Sources/main.swift
Creating Tests/
Package.swift を修正
dependencies 部分を追加して、Socket.IO-Client-Swift を使えるようにします。
Package.swift
import PackageDescription
let package = Package(
name: "client",
dependencies: [
.Package(url: "https://github.com/socketio/socket.io-client-swift", majorVersion: 8)
]
)
ライブラリの取得とビルド
$ swift build
Cloning https://github.com/socketio/socket.io-client-swift
HEAD is now at 163a770 bump version
Resolved version: 8.1.2
Compile Swift Module 'SocketIO' (24 sources)
Compile Swift Module 'client' (1 sources)
Linking ./.build/debug/client
テスト用ソース
クライアント側
main.swift
import Foundation
import SocketIO
let socket = SocketIOClient(socketURL: URL(string: "http://localhost:3000")!, config: [.forceWebsockets(true)])
socket.on("connect") { data, ack in
print("socket connected")
print("send message")
socket.emit("from_client", "Hello")
}
socket.on("from_server") { data, ack in
if let msg = data[0] as? String {
print("receive: " + msg)
}
}
socket.connect()
CFRunLoopRun()
サーバ側
Node.js を使います。
server.js
var server = require("http").createServer(function(req, res) {
res.write("Hello World!!");
res.end();
});
var io = require('socket.io')(server);
io.on('connection', function(socket) {
console.log("client connected")
socket.on('disconnect', function() {
console.log("client disconnected")
});
socket.on("from_client", function(msg){
console.log("receive: " + msg);
console.log("send message");
socket.emit("from_server", "welcome");
});
});
server.listen(3000);
実行
サーバ側実行
まずはサーバ側を実行しておきます。
$ node server.js
クライアント側ビルド & 実行 & 結果表示
クライアント側を実行と表示内容です。
$ swift build
Compile Swift Module 'client' (1 sources)
Linking ./.build/debug/client
$ .build/debug/client
socket connected
send message
receive: welcome
^C
サーバ側結果表示
サーバ側の表示内容です。
$ node server.js
client connected
receive: Hello
send message
client disconnected