Как создать «фиктивных клиентов» на стороне сервера, которые используют интерфейс сервера в Flask / Socketio - PullRequest
1 голос
/ 25 апреля 2019

У меня есть приложение Flask / SocketIO, которое в настоящее время объединяет двух клиентов для совместной игры.В данный момент клиенты взаимодействуют с сервером через некоторый скомпилированный Javascript на стороне клиента, и я использую socketio для определения сокетов, которые вызывают клиенты, например, movedForward, когда этот клиент двигался вперед.JS на стороне клиента аналогичным образом определяет веб-сокеты, которые сервер будет генерировать, например, partnerTurnedRight, когда сервер передает движение партнера другому игроку.

Я хотел бы создать «фиктивных» клиентов нана стороне сервера, которая может взаимодействовать с обычным, удаленным клиентом - в основном, реализация Python Javascript, который создается каждый раз, когда подключается удаленный клиент.Идея состоит в том, чтобы серверный «игрок» играл в игру с удаленным человеком-клиентом.

Я не уверен, как реализовать что-то подобное.Моя интуиция заключается в том, что я должен создать отдельное приложение Flask / SocketIO (каким-то образом), которое имеет сокеты для сообщений, отправляемых сервером (например, partnerTurnedRight), и отправляет сообщения, ожидаемые сервером (например, movedForward).Затем, когда подключается удаленный клиент, порождает подпроцесс с состоянием, который имеет свой уникальный sid и способен взаимодействовать с сервером с точно таким же интерфейсом, что и удаленный клиент.Однако я действительно не уверен, как собрать все воедино или как на самом деле создать клиент на стороне сервера, подобный этому.

Пример проекта, который делает что-то вроде этого, некоторый псевдокод или общую структуру того, какбыло бы очень полезно установить что-то вроде этого!

(Отчасти проблема в том, что я не знаю, какие поисковые термины использовать, поэтому трудно найти примеры.)

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете использовать пакет python-socketio на стороне сервера, используя 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...