如何使用 Flask 为游戏腾出空间?
How to make rooms for game with Flask?
我在服务器上使用 Flask-SocketIO,在 PC 上使用 socketIO-client。
PC端启动应用后,发送获取房间密码的请求:
socketIO = SocketIO('192.168.43.217', 8080)
def get_code(code):
submit_code = code
print('code =', code)
socketIO.emit('new_room')
socketIO.on('get_code', get_code)
socketIO.wait()
服务器发送代码:
@socketio.on('new_room')
def new_room():
code = randint(1000, 9999)
db.session.add(Rooms(code))
db.session.commit()
emit('get_code', code)
我在用户的后面添加了 socketio.emit('new_user', current_user.name)
,该代码将名称发送到 PC 客户端。
但是如果我创建两个或更多房间,我明白了,同一个用户登录了不同的房间。
我怎样才能做出类似 socketio.emit('new_user', current_user.name, namespace=f'/{room_code}')
的东西?
那只会发射到正确的房间。
或者这个方法不对?
之后,游戏开始,PC客户端会显示答案,玩家会从PC上得到一些答案,然后像这样发回:
1)服务器生成代码,返回电脑
2) 另一台设备的人输入代码、他的昵称并连接
3) 他出现在房间里
4)连接的电脑出现一条记录
5)游戏开始,任务显示
6) 电话有接听选项
7) 电脑显示谁回答了,好吧,那已经是纯游戏逻辑了。积分计算等
生成房间后,应通过调用将客户端添加到其中:
from flask_socketio import enter_room
@socketio.on('new_room')
def new_room():
code = randint(1000, 9999)
enter_room(str(code))
db.session.add(Rooms(code))
db.session.commit()
emit('get_code', code)
然后您可以通过以下方式向此房间中的用户发送事件:
socketio.emit('new_user', current_user.name, room=str(room_code))
我在服务器上使用 Flask-SocketIO,在 PC 上使用 socketIO-client。 PC端启动应用后,发送获取房间密码的请求:
socketIO = SocketIO('192.168.43.217', 8080)
def get_code(code):
submit_code = code
print('code =', code)
socketIO.emit('new_room')
socketIO.on('get_code', get_code)
socketIO.wait()
服务器发送代码:
@socketio.on('new_room')
def new_room():
code = randint(1000, 9999)
db.session.add(Rooms(code))
db.session.commit()
emit('get_code', code)
我在用户的后面添加了 socketio.emit('new_user', current_user.name)
,该代码将名称发送到 PC 客户端。
但是如果我创建两个或更多房间,我明白了,同一个用户登录了不同的房间。
我怎样才能做出类似 socketio.emit('new_user', current_user.name, namespace=f'/{room_code}')
的东西?
那只会发射到正确的房间。
或者这个方法不对? 之后,游戏开始,PC客户端会显示答案,玩家会从PC上得到一些答案,然后像这样发回:
1)服务器生成代码,返回电脑
2) 另一台设备的人输入代码、他的昵称并连接
3) 他出现在房间里
4)连接的电脑出现一条记录
5)游戏开始,任务显示
6) 电话有接听选项
7) 电脑显示谁回答了,好吧,那已经是纯游戏逻辑了。积分计算等
生成房间后,应通过调用将客户端添加到其中:
from flask_socketio import enter_room
@socketio.on('new_room')
def new_room():
code = randint(1000, 9999)
enter_room(str(code))
db.session.add(Rooms(code))
db.session.commit()
emit('get_code', code)
然后您可以通过以下方式向此房间中的用户发送事件:
socketio.emit('new_user', current_user.name, room=str(room_code))