如何在服务器端生成使用Flask/Socketi中服务器接口的“虚拟客户机”

2024-04-29 00:11:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

(问题的一部分是我不知道用什么搜索词,所以很难找到例子。)


Tags: 服务器应用程序消息客户端flask客户机远程定义
1条回答
网友
1楼 · 发布于 2024-04-29 00:11:03

可以使用python在服务器端使用python-socketio包。下面是一个客户端用法示例:

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()

相关问题 更多 >