I am in trouble how to implement websocket function to my swift code.
I have completed a server implementation and another javascript client. They are working well. So, I believe websocket server is not wrong.
But if I write the code in swift, it don't work. No error happen and no message is shown on the console.
Here is my swift code.
import UIKit
import SocketIO
class ChatViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {
    @IBOutlet weak var tableView: UITableView!
    var bottomView: ChatRoomInputView!
    var chats: [ChatEntity] = []
    var socket: SocketIOClient!
    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
        // Initialize WebSocket
        let manager = SocketManager(socketURL: URL(string: "http://example.com:8081")!, config: [.log(true), .compress])
        socket = manager.defaultSocket
        socket.on(clientEvent: .connect) {data, ack in
            print("socket connected")
        }
        socket.on("server_to_client") {[weak self] data, ack in
            print ("get Massage!!!")
        }
        socket.connect()
        socket.emit("join_room", with: [getRegistrationId()])
        socket.emit("client_to_server", with: ["ack_client"])
        setupUI()
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
    }
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    }
    override var canBecomeFirstResponder: Bool {
        return true
    }
    override var inputAccessoryView: UIView? {
        return bottomView
    }
    func setupUI() {
        self.view.backgroundColor = UIColor(red: 113/255, green: 148/255, blue: 194/255, alpha: 1)
        tableView.backgroundColor = UIColor(red: 113/255, green: 148/255, blue: 194/255, alpha: 1)
        tableView.separatorColor = UIColor.clear
        tableView.estimatedRowHeight = 10000
        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.allowsSelection = false
        tableView.keyboardDismissMode = .interactive
        tableView.register(UINib(nibName: "YourChatViewCell", bundle: nil), forCellReuseIdentifier: "YourChat")
        tableView.register(UINib(nibName: "MyChatViewCell", bundle: nil), forCellReuseIdentifier: "MyChat")
        self.bottomView = ChatRoomInputView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 60))
        bottomView.chatTextField.delegate = self
        bottomView.textSendButton.addTarget(self, action: #selector(self.chatTextSendButton(_:)), for: .touchUpInside)
    }
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.chats.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let chat = self.chats[indexPath.row]
        if chat.isMyChat() {
            let cell = tableView.dequeueReusableCell(withIdentifier: "MyChat") as! MyChatViewCell
            cell.clipsToBounds = true
            // Todo: isRead
            cell.updateCell(text: chat.text, time: chat.time, isRead: true)
            return cell
        } else {
            let cell = tableView.dequeueReusableCell(withIdentifier: "YourChat") as! YourChatViewCell
            cell.clipsToBounds = true
            cell.updateCell(text: chat.text, time: chat.time, pic: RemoshinData.getDoctorPic())
            return cell
        }
    }
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print(indexPath)
    }
    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return 10
    }
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
    func textFieldShouldClear(_ textField: UITextField) -> Bool {
        return true
    }
    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        textField.inputFieldBorderBottom(color: Utils.getColor(),
                                     x: textField.center.x,
                                     y: textField.center.y,
                                     w: textField.frame.size.width,
                                     h: textField.frame.size.height)
        bottomView.chatTextField = textField
        return true
    }
    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
        textField.inputFieldBorderBottom(color: UIColor.lightGray,
                                     x: textField.center.x,
                                     y: textField.center.y,
                                     w: textField.frame.size.width,
                                     h: textField.frame.size.height)
        return true
    }
    @objc func chatTextSendButton(_ sender: AnyObject) {
        let chatText = bottomView.chatTextField.text!
        if (chatText != "") {
            let _mainViewController = MainViewController()
            let jsonData = _mainViewController.sendChatText(_registration_id: getRegistrationId(), _chat_text: chatText)
            if(jsonData["status"].string! == "success") {
                socket.emit("client_to_server", with: ["update_chat"])
                let chat = ChatEntity(text: jsonData["chat_text"].string!, time: "", userType: .I)
                chats.append(chat)
                tableView.reloadData()
                bottomView.chatTextField.text = ""
            }
        }
    }
}
I want to see "socket connected" message on my console when the app run. I think the socket is something wrong. But I have no idea what is wrong because no error message found. And I doubt if I need some setting in my info.plist. But, I don't make sense how to write.
Please give me some advice?
 
     
    