【问题标题】:How to subscribe a socket channel using SocketIO? [closed]如何使用 SocketIO 订阅套接字通道? [关闭]
【发布时间】:2021-03-25 23:34:06
【问题描述】:

我正在尝试连接到特定频道,以便我只能收听发送到该频道的事件。我在服务器端使用了 Laravel Echo。

【问题讨论】:

    标签: ios swift laravel socket.io


    【解决方案1】:

    在这个问题上花了一些时间后,我终于找到了解决方案。这是解决方案

    private let manager = SocketManager(socketURL: URL(string: "http://testserver.com:6001")!, config: [.log(true), .compress, .reconnects(true), .reconnectAttempts(-1), .forceWebsockets(true), .forcePolling(true)])
    private var socket: SocketIOClient!
    private var nameSpace = "App\\Events\\"
    
    func connect() {
        socket = manager.defaultSocket
        socket.connect()
        socket.on(clientEvent: .connect) {data, ack in
            let channelData = ["channel": "test-channel"]
            self.socket.emit("subscribe", channelData) {
                print("Sockets: test-channel subscribed")
                socket.on("\(nameSpace)newMessage") { (data, ack) in
                    print("Sockets: newMessage event called")
                }
            }
        }
    }
    

    【讨论】:

    • 请同时添加相关第三方代码的链接(SocketManagerSocketIOClient
    • @AwaisFayyaz 链接已添加到 Socket.IO-Client-Swift 的 GitHub 存储库中
    【解决方案2】:

    我会研究 URLSessionWebSocketTask.. 他们设置 API 的方式有点奇怪,但它是标准库中的唯一选项。我在下面添加了一个链接以开始使用..

    https://medium.com/better-programming/websockets-in-ios-13-using-swift-and-xcode-11-18fa3000d802

    对于频道订阅,您很可能需要通过套接字发送消息并在后端保存对该频道的引用。这就是前端代码的样子..

    https://github.com/BJBeecher/Networking/blob/master/Sources/Networking/WebSockets/WebSocket.swift

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 2019-02-25
      • 1970-01-01
      • 2011-05-19
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 1970-01-01
      相关资源
      最近更新 更多