Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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
Python 如何产卵';虚拟客户机&x27;在使用服务器的服务器端';烧瓶/插座中的s接口_Python_Flask_Socket.io - Fatal编程技术网

Python 如何产卵';虚拟客户机&x27;在使用服务器的服务器端';烧瓶/插座中的s接口

Python 如何产卵';虚拟客户机&x27;在使用服务器的服务器端';烧瓶/插座中的s接口,python,flask,socket.io,Python,Flask,Socket.io,我有一个Flask/SocketIO应用程序,目前它将两个客户端配对在一起玩游戏。现在客户端通过一些编译的客户端Javascript与服务器交互,我使用socketio定义客户端调用的套接字,例如,当客户端向前移动时,movedForward。客户端JS类似地定义了服务器将向其发送的WebSocket,例如,当服务器将合作伙伴的移动传递给其他玩家时,partnerTurnedRight 我想在服务器端创建“虚拟”客户机,它可以与普通的远程客户机交互——基本上,是每次远程客户机连接时产生的Java

我有一个Flask/SocketIO应用程序,目前它将两个客户端配对在一起玩游戏。现在客户端通过一些编译的客户端Javascript与服务器交互,我使用socketio定义客户端调用的套接字,例如,当客户端向前移动时,
movedForward
。客户端JS类似地定义了服务器将向其发送的WebSocket,例如,当服务器将合作伙伴的移动传递给其他玩家时,
partnerTurnedRight

我想在服务器端创建“虚拟”客户机,它可以与普通的远程客户机交互——基本上,是每次远程客户机连接时产生的Javascript的python实现。其想法是让服务器端“玩家”与远程人工客户端一起玩游戏

我不知道如何着手实施这样的东西。我的直觉是,我应该创建一个单独的Flask/SocketIO应用程序(以某种方式),它为服务器发送的消息(例如,
partnerTurnedRight
)打开套接字,并发出服务器期望的消息(例如,
movedForward
)。然后,当远程客户端连接时,生成一个有状态子进程,该子进程具有自己唯一的sid,并且能够使用与远程客户端完全相同的接口与服务器交互。然而,我真的不知道如何把所有东西放在一起,或者如何真正生成这样的服务器端客户端

一个这样做的示例项目,一些伪代码,或者一个如何设置这样的东西的一般结构,将非常感谢

(部分问题是我不知道使用什么搜索词,因此很难找到示例。)

您可以使用python使用包服务器端。下面是一个客户端使用的示例:

import socketio

sio = socketio.Client()

@sio.on('connect')
def on_connect():
    print('connected')
    sio.emit('Hello')

@sio.on('event')
def on_message(data):
    print('Received ', data)

@sio.on('disconnect')
def on_disconnect():
    print('disconnected')

sio.connect('http://localhost:5000')
sio.wait()

谢谢,但是我需要用python实现我的客户机。我发现了一些python包/项目,它们似乎用python实现了客户端(例如),我认为这是正确的方向?是的,如果必须使用python,这是一个很好的选择。我将相应地调整我的答案。谢谢!我的客户端将是有状态的,当远程客户端连接时,我将生成它(例如,作为子进程)。因此,为了使它有状态,我假设我可以在这段代码中[1]一些包含状态的全局变量,或者[2]将事件侦听器包装在一个类中?当然@Alsuhreys谢谢(使用python socketio连接works,但我还没有着手实现整个虚拟客户机),我接受这个答案。