websocket判断IP的问题?

利用websocket做一个web聊天室,前台通过socket.io发送信息给后台(Flask-SocketIO),后台收到后再推送给所有客户端,想对这个数据增加一个status属性,当接收方就是发送信息的那个客户端时,这个属性值是self,否则是other,请问怎么实现呢?


后端代码:

@socketio.on('message')
def handler_message(data):
    user = data.get('user')
    content = data.get('msg')
    chat_time = datetime.now()
    ip = session['ip']
    log = Logs(username=user, address=ip, content=content, chat_time=chat_time)
    db.session.add(log)
    db.session.commit()
    data['chat_time'] = str(chat_time)
    socketio.emit('res', data)

前端代码:

var socket = io.connect('http://' + document.domain + ':' + location.port);
var click = function () {
    socket.emit('message', {
        'msg': msg,
        'user': user
    });
};
socket.on("res", function (resp) {
    console.log(resp);
}) 
阅读 3.2k
2 个回答

其实你的客户端已经可以判断出消息发送者了, 只要对比自身的 user 与消息中的 user.

在这种情况下,客户端可以伪造发送者, 不如在 handler_message 内, 给广播消息添加 sender 属性.

改一下socketio.emit('res', data)
手动遍历。自己发的就是对应的socket是当前的socket

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题