Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在用户更改页面后使用Vocketio和Vue向房间发送消息_Python_Vue.js_Socket.io - Fatal编程技术网

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)