当前位置: 首页 > 知识库问答 >
问题:

无法在swift中通过Socket.io建立连接

邴烨
2023-03-14

我正在为Swift使用socket.io框架。我试图通过websockets API连接,我有一个方法,它在ViewControllerViewDidLoad中被调用。我已经全局声明了我的manager和socketClient,我将把方法的代码放在下面:

private func setupSockets() {
    manager = SocketManager(socketURL: URL(string: "http://kaboom.rksv.net")!, config: [.log(true), .compress])
    socket = SocketIOClient(manager: manager, nsp: "/watch")//manager.defaultSocket
    socket.onAny {print("Got event: \($0.event), with items: \($0.items)")}

        socket.on("data", callback: { (data, ack) in
        print(data)
    })

    socket.on("error", callback: { (data, ack) in
        print(data)
        print(ack)

    })


    socket.on("connect", callback: { (data, ack) in
        print(data)
        print(ack)


        self.socket.emit("ping", [])

    })

    socket.connect()
}

我面临的问题是没有调用connect回调,因此无法发出ping消息。以下是日志:

2018-02-18 19:02:20.589916+0530股票-蛋糕[10965:3662189]日志SocketManager:添加引擎

2018-02-18 19:02:32.986354+0530股票-蛋糕[10965:3662271]日志套件引擎:启动引擎。服务器:http://kaboom.rksv.net

2018-02-18 19:02:32.988480+0530股票-蛋糕[10965:3662271]日志套件引擎:握手

2018-02-18 19:02:33.208867+0530股票-蛋糕[10965:3662406]日志socketengine:得到消息:0{“sid”:“4uf21mr7_9dgjsxcaasj”,“upgrades”:“websocket”],“pinginterval”:25000,“pingtimeout”:60000}

2018-02-18 19:02:33.226824+0530股票-蛋糕[10965:3662189]日志SocketManager:引擎打开连接

2018-02-18 19:02:33.226894+0530股票-蛋糕[10965:3662406]日志socketenginePolling:Doing polling GET http://kaboom.rksv.net/socket.io/?transport=polling&b64=1&sid=4uf21mr7_9dgjsxcaasj

2018-02-18 19:02:33.227367+0530股票-蛋糕[10965:3662406]日志套件引擎:写作投票:有数据:假

2018-02-18 19:02:33.227447+0530股票-蛋糕[10965:3662406]日志socketenginePolling:发送轮询:as类型:2

2018-02-18 19:02:33.230935+0530股票-蛋糕[10965:3662406]日志SocketEnginePolling:创建的POST字符串:1:2

2018-02-18 19:02:33.280857+0530股票-蛋糕[10965:3662406]日志socketenginePolling:得到轮询响应

2018-02-18 19:02:33.281066+0530股票-蛋糕[10965:3662406]日志socketenginePolling:获得投票消息:2:40

2018-02-18 19:02:33.281933+0530股票-蛋糕[10965:3662406]日志套件引擎:得到消息:40

2018-02-18 19:02:33.283167+0530 stocks-cake[10965:3662189]日志socketparser:解码的数据包为:SocketPacket{类型:0;数据:[];ID:-1;占位符:0;nsp:/}

2018-02-18 19:02:33.283195+0530股票-蛋糕[10965:3662406]日志socketenginePolling:Doing polling GET http://kaboom.rksv.net/socket.io/?transport=polling&b64=1&sid=4uf21mr7_9dgjsxcaasj

2018-02-18 19:02:33.330123+0530股票-蛋糕[10965:3662271]日志SocketEngineWebSocket:发送WS:probe类型:2

2018-02-18 19:02:33.340044+0530股票-蛋糕[10965:3662407]日志socketenginePolling:得到轮询响应

2018-02-18 19:02:33.340351+0530股票-蛋糕[10965:3662407]日志socketenginePolling:获得投票消息:1:3

2018-02-18 19:02:33.340621+0530股票-蛋糕[10965:3662407]日志套件引擎:得到消息:3

2018-02-18 19:02:33.379059+0530股票-蛋糕[10965:3662407]日志socketengine:收到探测响应,应该升级到WebSockets

2018-02-18 19:02:33.379252+0530股票-蛋糕[10965:3662407]日志套件引擎:将传输升级到WebSockets

2018-02-18 19:02:33.379368+0530股票-蛋糕[10965:3662407]日志socketenginePolling:发送轮询:as类型:6

2018-02-18 19:02:33.4777785+0530股票-蛋糕[10965:3662407]日志socketenginePolling:得到轮询响应

2018-02-18 19:02:33.478016+0530股票-蛋糕[10965:3662407]日志socketenginePolling:获得投票消息:1:6

2018-02-18 19:02:33.478639+0530股票-蛋糕[10965:3662407]日志套件引擎:得到消息:6

2018-02-18 19:02:33.480317+0530股票-蛋糕[10965:3662407]日志套件引擎:冲洗探针等待

2018-02-18 19:02:59.288327+0530股票-蛋糕[10965:3662407]日志socketengine:写入WS:有数据:false

2018-02-18 19:02:59.288576+0530股票-蛋糕[10965:3662407]日志SocketEngineWebSocket:发送WS:as类型:2

我错过了什么吗?做错事了吗?提前谢了。

共有1个答案

阳航
2023-03-14

声明应该如下所示,您忘记设置端口

   let manager = SocketManager(socketURL: URL(string: "http://localhost:8080")!, config: [.log(true), .compress])
   let socket = manager.defaultSocket
 类似资料:
  • 问题内容: 我有一个使用socket.IO的node.js应用程序。它可以在http上正常工作,但是当尝试通过https连接到套接字时,没有任何反应。 这是代码的一部分: 和功能: 客户端连接如下: 正如我说的,在http上一切正常,但是在https上连接会给我“连接被中断”。我究竟做错了什么? 问题答案: 您不能像服务器那样初始化服务器。您必须启动一个单独的https服务器,然后将socket.

  • 问题内容: 我想一个简单的聊天应用程序在这里与socket.io和node.js中 每次重新启动node.js服务器时,socket.io都会自动重新连接,并以某种方式创建与服务器的另一个连接,即客户端现在两次收到相同的聊天消息。我该如何解决? 问题答案: 默认情况下,在disconnect socket.io上重新连接丢失的连接,从而重新运行事件。因此,每次重新连接时,您都会添加一个事件监听器来

  • 你好在我的代码它打破了我的请求,我尝试了几次,但1-2小时后bot状态不再改变。 我在ftp服务器上托管这些文件。 以后从未检索到任务异常:异常=ConnectionError(MaxRetryError(“HTTPConnectionPool(host='username.mydomain',port=80”):url超过最大重试次数:/project/total_visit/count.txt

  • 有人能在这个问题上帮忙吗。

  • 我发现自己在一个工作,我必须与Windows服务器(2012)-我从来没有问题与建立DB连接,但现在我似乎没有找到任何正确的解决方案。 我将向您展示我的连接php代码: 这是我在浏览器中得到的结果: SQLSTATE[HY000][2002]是一家大型计算机公司。 翻译成英文: 无法建立连接,因为目标机器主动拒绝它。 注意:我下载了mssql驱动程序和sqlsrv驱动程序,并将它们解压缩到/ext

  • 问题内容: 我迷上了Firefox。我无法使Websocket正常工作。我使用TornadoWebsocket,并通过以下代码对其进行了初始化: 然后像这样在Javascript端初始化它: 这段代码在Chrome上运行良好,同时我自己创建了证书并在HTTPS下运行页面。但是Firefox一直在说: 我用谷歌搜索,发现了太多想法,但没有一个对我有用:( 任何帮助将不胜感激。 问题答案: 我通过Pr