Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为iOS客户端和Python服务器使用Socket.IO?_Python_Ios_Swift_Sockets_Socket.io - Fatal编程技术网

如何为iOS客户端和Python服务器使用Socket.IO?

如何为iOS客户端和Python服务器使用Socket.IO?,python,ios,swift,sockets,socket.io,Python,Ios,Swift,Sockets,Socket.io,老实说,我的脑袋都快被这个弄死了 我只想简单地将python脚本(在raspberry pi上)连接到我的iOS swift应用程序。除了python端的一个明显的“连接”(应该充当服务器)之外,什么都不起作用。我正在为我的socket.io swift客户端和python socket.io服务器使用repo 我在他们的两个文档上都尝试了这两个代码示例,没有发生任何事情,没有共享任何数据,python服务器脚本似乎认为在我运行应用程序时存在连接,但应用程序的想法不同。发送消息不起作用,回调/确

老实说,我的脑袋都快被这个弄死了

我只想简单地将python脚本(在raspberry pi上)连接到我的iOS swift应用程序。除了python端的一个明显的“连接”(应该充当服务器)之外,什么都不起作用。我正在为我的socket.io swift客户端和python socket.io服务器使用repo

我在他们的两个文档上都尝试了这两个代码示例,没有发生任何事情,没有共享任何数据,python服务器脚本似乎认为在我运行应用程序时存在连接,但应用程序的想法不同。发送消息不起作用,回调/确认也不起作用,我肯定做错了什么

我已经成功地将这个python脚本连接到Node.js驱动的后端,没有任何问题,而且它工作得完美无缺

这是我的Swift iOS客户端代码:

let manager = SocketManager(socketURL: URL(string: "http://\(hubIP ?? "0.0.0.0"):8080")!, config: [.log(true), .compress])
let socket = manager.defaultSocket
            
socket.on(clientEvent: .connect) {data, ack in
        print("socket connected")
}
            
socket.on("callback") {data, ack in 
        print(data)
}
               
socket.connect()
这是我的python(服务器)端代码:

@sio.event 
async def connect(sid, environ):
    print('Connection', sid)
    await sio.emit('callback', "testing")

@sio.event
def disconnect(sid):
    print('Disconnection')

@sio.event
def update(data):
    print(data)
现在,当我在python shell中运行我的应用程序时,它会打印:

Connection 9a39ca47581a4a4fa13a6ab0ae49d2c9
但是,从我所看到的情况来看,
socket.on(clientEvent:.connect)
并没有在iOS端启动

这是我在Xcode中启用调试时的控制台:

2020-08-31 21:09:37.633585+0100 [46528:929263] LOG SocketIOClient{/}: Adding handler for event: connect
2020-08-31 21:09:37.633846+0100 [46528:929263] LOG SocketIOClient{/}: Adding handler for event: callback
2020-08-31 21:09:37.634416+0100 [46528:929263] LOG SocketIOClient{/}: Handling event: statusChange with data: [connecting, 2]
2020-08-31 21:09:37.634731+0100 [46528:929263] LOG SocketIOClient{/}: Joining namespace /
2020-08-31 21:09:37.634935+0100 [46528:929263] LOG SocketManager: Tried connecting socket when engine isn't open. Connecting
2020-08-31 21:09:37.635093+0100 [46528:929263] LOG SocketManager: Adding engine
2020-08-31 21:09:37.636300+0100 [46528:929263] LOG SocketManager: Manager is being released
2020-08-31 21:09:37.636367+0100 [46528:929411] LOG SocketEngine: Starting engine. Server: http://192.168.0.33:8080
2020-08-31 21:09:37.636523+0100 [46528:929411] LOG SocketEngine: Handshaking
2020-08-31 21:09:37.636528+0100 [46528:929263] LOG SocketIOClient{/}: Client is being released
2020-08-31 21:09:37.637237+0100 [46528:929411] LOG SocketEnginePolling: Doing polling GET http://192.168.0.33:8080/socket.io/?transport=polling&b64=1
2020-08-31 21:09:37.677613+0100 [46528:929414] LOG SocketEnginePolling: Got polling response
2020-08-31 21:09:37.677835+0100 [46528:929414] LOG SocketEnginePolling: Got poll message: 109:0{"sid":"6cf19e66c3e34fe09b59cd452f6ec49a","upgrades":["websocket"],"pingTimeout":60000,"pingInterval":25000}24:42["callback","testing"]2:40
2020-08-31 21:09:37.678339+0100 [46528:929414] LOG SocketEngine: Got message: 0{"sid":"6cf19e66c3e34fe09b59cd452f6ec49a","upgrades":["websocket"],"pingTimeout":60000,"pingInterval":25000}
2020-08-31 21:09:37.683767+0100 centreCore[46528:929414] LOG SocketEngine: Got message: 42["callback","testing"]
2020-08-31 21:09:37.683958+0100 [46528:929414] LOG SocketEngine: Got message: 40
2020-08-31 21:09:37.684428+0100 [46528:929414] LOG SocketEngine: Writing poll:  has data: false
2020-08-31 21:09:37.685011+0100 [46528:929414] LOG SocketEnginePolling: Sending poll:  as type: 2
2020-08-31 21:09:37.685843+0100 [46528:929414] LOG SocketEnginePolling: Created POST string: 1:2
2020-08-31 21:09:37.686503+0100 [46528:929414] LOG SocketEnginePolling: POSTing
2020-08-31 21:09:37.687064+0100 [46528:929414] LOG SocketEngine: Engine is being released
在我写这篇文章的时候,我可以从这些行中看到,它确实通过上面的这些行接收消息,只是没有接收到任何消息:

109:0{"sid":"6cf19e66c3e34fe09b59cd452f6ec49a","upgrades":["websocket"],"pingTimeout":60000,"pingInterval":25000}24:42["callback","testing"]2:40
2020-08-31 21:09:37.678339+0100 [46528:929414] LOG SocketEngine: Got message: 0{"sid":"6cf19e66c3e34fe09b59cd452f6ec49a","upgrades":["websocket"],"pingTimeout":60000,"pingInterval":25000}
2020-08-31 21:09:37.683767+0100 [46528:929414] LOG SocketEngine: Got message: 42["callback","testing"]

我可以看到显示的套接字的正确Sid,以及打印数据为“testing”的回调函数,但为什么代码方面什么都没有发生?我只需要先做这些,更不用说回调和ack了?

你能更新服务器端代码吗?我想缺少了一些东西(套接字初始化)@pazitos10服务器端代码?我提供了与上述问题相关的所有代码,我解释说我使用socketIO作为python脚本与后端对话只是为了解释我知道我在做什么,这部分与这个问题无关:)我的错。我没有读到您的客户端正在成功连接。@pazitos10是的,它显然正在连接,但之后没有发生任何其他事情?您能更新服务器端代码吗?我想缺少了一些东西(套接字初始化)@pazitos10服务器端代码?我提供了与上面这个问题相关的所有代码,我解释说我使用socketIO作为python脚本与后端对话只是为了解释我知道我在做什么,这部分与这个问题无关:)我的错。我没有读到你的客户正在成功连接。@pazitos10是的,它显然正在连接,但之后没有发生其他事情?