オンラインゲームを作ろうと思い、socket.ioをiOSアプリでも動かせるように実装しました。
重要なのは以下2点です。
- Node.js側で {allowEIO3: true} を指定してやるところ
- Swift側でJSONSerializationを2回使ってやるところ
Node.js
var server = https.createServer(options, app);
const { Server } = require("socket.io");
const io = new Server(server, {allowEIO3: true});
var dragData = [];
io.on('connection', (socket) => {
...
...
...
}
Swift
socket.on("drag"){data, ack in
do {
let jsonData = try JSONSerialization.data(withJSONObject: data)
let json = try JSONSerialization.jsonObject(with: jsonData, options: JSONSerialization.ReadingOptions.allowFragments) as! NSArray
self.dataList = json[0] as? NSArray
} catch {
print("#####error")
return
}
}
以上の点を押さえておくと実装を進めることができると思います。
iPhoneでリアルタイム同時接続が出来るのは感動します。