Socke.IOをSwiftで使う

オンラインゲームを作ろうと思い、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でリアルタイム同時接続が出来るのは感動します。