Я пытаюсь подключиться к своему живому серверу. Ошибка получения соединения в iOS - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь подключиться к своему живому серверу для подключения через веб-сокет.Но я получаю ниже ошибку в iOs.

веб-сокет отключен: Необязательно (Ошибка домена = Код NSPOSIXErrorDomain = 61 «Соединение отклонено» UserInfo = {_ kCFStreamErrorCodeKey = 61, _kCFStreamErrorDomainKey = 1})

Я пробовал с другим сервером, но он работает с ним.просто не с указанным сервером в моем коде.оба сервера имеют https.

Вот моя ссылка на исходный код iOS: https://www.dropbox.com/s/v348vxxjf74dsds/websocket.zip?dl=0

import UIKit
import Starscream

class ViewController: UIViewController, WebSocketDelegate {
    @IBOutlet var button: UIButton!
    @IBOutlet var textfiled: UITextField!
    var socket = WebSocket(url: URL(string: "https://103.240.79.191:8080")!)

    override func viewDidLoad() {
        super.viewDidLoad()
        socket.delegate = self
        debugPrint("Called")
        socket.connect()
    }

    func websocketDidConnect(socket: WebSocketClient) {
        print("websocket is connected")
        socket.write(string: "connected")
    }

    func websocketDidReceiveMessage(socket: WebSocketClient, text: String) {
        print("got some text: \(text)")
    }

    func websocketDidDisconnect(socket: WebSocketClient, error: Error?) {
        print("websocket is disconnected: \(error)")
    }

    func websocketDidReceiveData(socket: WebSocketClient, data: Data) {
        debugPrint("Data")
        debugPrint(data)
    }

    @objc func update() {
        debugPrint("Called")
        socket.connect()
    }
    @IBAction func btnclick() {
        socket.write(string: textfiled.text ?? "")
    }
}

Пожалуйста, найдите следующий код на стороне сервера:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 }, () => {
    console.log("Signaling server is now listening on port 8080")
});

// Broadcast to all.
wss.broadcast = (ws, data) => {
    wss.clients.forEach((client) => {
        if (client !== ws && client.readyState === WebSocket.OPEN) {
            client.send(data);
        }
    });
};

wss.on('connection', (ws) => {
    console.log(`Client connected. Total connected clients: ${wss.clients.size}`)

    ws.onmessage = (message) => {
        console.log(message.data + "\n");
        wss.broadcast(ws, message.data);
    }

    ws.onclose = () => {
        console.log(`Client disconnected. Total connected clients: ${wss.clients.size}`)
    }
});

1 Ответ

0 голосов
/ 07 июня 2019

Он работал с одним сервером, но не с другим сервером, и после проверки различий между двумя серверами, я обнаружил, что брандмауэр работающего сервера отключен. Так что я просто отключаю брандмауэр и его подключение.

...