Python 如何在用户更改页面后使用Vocketio和Vue向房间发送消息
我希望用户能够向房间发送消息,但我希望他们在一个页面上加入房间,然后在另一个页面上发送消息 因此,当用户登录时,他们将加入后端的预定义房间。 然后,他们将被路由到一个新页面,在那里他们将发送消息 这是页面前端的代码:“登录页面”和“发送消息页面” 前端 登录页面,Python 如何在用户更改页面后使用Vocketio和Vue向房间发送消息,python,vue.js,socket.io,Python,Vue.js,Socket.io,我希望用户能够向房间发送消息,但我希望他们在一个页面上加入房间,然后在另一个页面上发送消息 因此,当用户登录时,他们将加入后端的预定义房间。 然后,他们将被路由到一个新页面,在那里他们将发送消息 这是页面前端的代码:“登录页面”和“发送消息页面” 前端 登录页面, 按login时,用户将向socketIO用户名事件处理程序发送其用户名(username\u login),即(@socketIO.on('username',namespace='/private')) HTML 发送消息页面 单击
按login时,用户将向socketIO用户名事件处理程序发送其用户名(username\u login),即(
@socketIO.on('username',namespace='/private')
)
HTML发送消息页面
单击“发送消息”按钮时,将运行“发送消息”功能,消息将发送给房间内的所有人,并弹出一条带有消息“朋友请求”的警报 下面是代码
methods: {
send_message(){
var json_message = [ {'message': "Hi"}, {'room':"first"}]
this.privatesocket.emit('private_message',json_message);
}
},
created()[
this.privatesocket = io("http://127.0.0.1:5000/private")
}
mounted(){
this.privatesocket.on('new_private_message', data =>{
this.$alert("Friend request")
});
}
当我在emit函数中发送给每个人(即broadcast=True)时,我发送给其他客户端没有问题,但是当我在“@socketio.on('private_message',namespace='/private')”
中的emit函数中包含“room=room”时,就不会发送任何内容。后端
在我的python脚本中,我实例化了应用程序和socketio,如下所示
app = Flask(__name__, static_folder = "static")
app.config['SECRET_KEY'] = 'secretkey'
app.config['CORS_HEADERS'] = 'Content-Type'
cors = CORS(app, resources={r"/": {"origins": origin_var}})
socketio = SocketIO(app, cors_allowed_origins="*")
这是当用户按登录时调用的函数,允许用户加入指定的房间
@socketio.on('username',namespace ='/private')
def receive_username(user):
room = user[1]["room"]
join_room(room)
message = user[0]["username"] + ' has entered the room.'
emit('username', {"message":message})
这是用户向指定房间发送消息的地方
@socketio.on('private_message', namespace ='/private')
def private_message(payload):
message = payload[0]['message']
room = payload[1]['room']
emit('new_private_message', {"message":message}, room=room)
如果我运行以下命令,则不会在客户端针对特定房间运行警报
问题在他们在另一页加入房间后,我如何才能将消息发送到特定房间
@socketio.on('username',namespace ='/private')
def receive_username(user):
room = user[1]["room"]
join_room(room)
message = user[0]["username"] + ' has entered the room.'
emit('username', {"message":message})
@socketio.on('private_message', namespace ='/private')
def private_message(payload):
message = payload[0]['message']
room = payload[1]['room']
emit('new_private_message', {"message":message}, room=room)