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

时间:2019-04-24 22:29:29

标签: python flask socket.io

我有一个Flask / SocketIO应用程序,该应用程序当前将两个客户端配对在一起一起玩游戏。目前,客户端正在通过一些编译的客户端Javascript与服务器进行交互,并且我正在使用socketio定义客户端调用的套接字,例如,当该客户端向前移动时,movedForward。客户端JS同样定义了当服务器将伙伴的动作传递给其他玩家时服务器将发出的websocket,例如partnerTurnedRight

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

我不确定如何实现这样的东西。我的直觉是,我应该创建一个单独的Flask / SocketIO应用程序(以某种方式),该应用程序具有用于服务器发送的消息(例如partnerTurnedRight)的套接字,并发出服务器期望的消息(例如movedForward )。然后,当远程客户端连接时,产生一个有状态的子进程,该进程具有自己的唯一sid,并且能够使用与远程客户端完全相同的接口与服务器进行交互。但是,我真的不确定如何将所有内容放在一起或如何实际生成这样的服务器端客户端。

一个执行类似这样的事情,一些伪代码或如何设置类似事情的一般结构的示例项目将不胜感激!

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

1 个答案:

答案 0 :(得分:1)

您可以在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()