LoginSignup
8
3

More than 5 years have passed since last update.

Socket.iO-client-swiftが動かない

Posted at

ハマりどころが一箇所あったのでラフに記事を書きます。

問題

Socket.IOのクライアントコードを書いたものの、ずっとconnectingで繋がらない。

結論

SocketManagerオブジェクトは、SocketIOClientの生存期間と同じ期間、強参照される必要がある。

問題の書き方

wrong.swift
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        manager = SocketManager(socketURL: URL(string: "http://localhost:8000")!, config: [.log(true), .forceWebsockets(true), .forcePolling(true)])
        socket = manager.defaultSocket

        socket.on(clientEvent: .connect) { [weak self] data, ack in
            print("connect")
            self?.socket.emit("join", ["hoge"])
        }

        socket.on("message") { data, ack in
            print("Message received")
            print(data)
        }

        socket.on(clientEvent: .statusChange) { data, ack in
            print(data)
            print(arc)
        }


        socket.connect()
    }


}


正しい書き方

correct.swift

import UIKit
import SocketIO
class ViewController: UIViewController {

    var manager: SocketManager!
    var socket: SocketIOClient!

    override func viewDidLoad() {
        super.viewDidLoad()

        manager = SocketManager(socketURL: URL(string: "http://localhost:8000")!, config: [.log(true), .forceWebsockets(true), .forcePolling(true)])
        socket = manager.defaultSocket

        socket.on(clientEvent: .connect) { [weak self] data, ack in
            print("connect")
            self?.socket.emit("join", ["hoge"])
        }

        socket.on("message") { data, ark in
            print("Message received")
            print(data)
        }

        socket.on(clientEvent: .statusChange) { data, ack in
            print(data)
            print(arc)
        }


        socket.connect()
    }


}

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3