是否无法在iOS swift中使用Web套接字?

问题描述 投票:0回答:1

我在iOS应用中集成了网络套接字。服务器用Nodejsexpress写入。除了我的iOS应用程序外,我还有一个reactjs网络应用程序。该网络应用正常运行,因此服务器端没有问题。我正在将此库用于我的iOS应用https://github.com/socketio/socket.io-client-swift/

现在,我可以从服务器接收事件,就像新用户加入了iOS应用程序一样,但是单击按钮后,iOS应用程序将不会发出任何事件。在viewdidload上,我有一个userjoin的emit事件,它可以正常运行。但是,当我在按钮上发送消息时,该事件不起作用。这是我的代码要点

let manager = SocketManager(socketURL: URL(string: "MY_URL")!, config: [.log(true), .compress])
    var socket: SocketIOClient? = nil

override func viewDidLoad() {
        super.viewDidLoad()

        socket = manager.defaultSocket

socket?.connect()

        socket?.on("connect") { _, _ in
            self.socket?.emit("userjoin", self.defaults.string(forKey:"email") ?? "")
        }

        socket?.on("userjoined", callback: { (data, ack) in
            self.userJoinedLbl.text = data[0] as? String ?? ""
        }) ...

上面的代码工作得很好。我的按钮下面的代码单击不起作用

@IBAction func sendMsgClicked(_ sender: Any) {
        debugPrint(self.defaults.string(forKey:"id") ?? "")
        socket?.on("connect") { _, _ in
            self.socket?.emit("sendMessage", self.sendMsgTextField.text ?? "",self.defaults.string(forKey:"id") ?? "")
        }

    }

我正在从Web套接字库获取以下日志

2020-04-05 15:09:58.032340+0530 WebSocketNativeIOS[5995:216223] LOG SocketIOClient{/}: Adding handler for event: connect
2020-04-05 15:10:17.211199+0530 WebSocketNativeIOS[5995:216223] LOG SocketIOClient{/}: Handling event: ping with data: []
2020-04-05 15:10:17.211211+0530 WebSocketNativeIOS[5995:218688] LOG SocketEngine: Writing ws:  has data: false
2020-04-05 15:10:17.211587+0530 WebSocketNativeIOS[5995:218688] LOG SocketEngineWebSocket: Sending ws:  as type: 2
2020-04-05 15:10:17.418903+0530 WebSocketNativeIOS[5995:218688] LOG SocketEngine: Got message: 3
2020-04-05 15:10:17.419593+0530 WebSocketNativeIOS[5995:216223] LOG SocketIOClient{/}: Handling event: pong with data: []

我正在发出一个sendMessage事件,该事件接收用户消息和用户ID。用户消息和用户ID不为null。 sendMessage事件在Web应用程序上正常运行]

单击按钮时我的Web应用程序的代码为

socket.emit("sendMessage", msg, localStorage.getItem("userId"));
ios swift websocket
1个回答
0
投票

确定,我知道了

© www.soinside.com 2019 - 2024. All rights reserved.