通知用户仍在键入消息

Pan*_*kaj 11 javascript laravel vue.js laravel-5.6

我正在使用Laravel 5.6.7,Socket.IO和vue.js. 我没有使用Pusher和redis.下面是我向用户发送消息的代码,一对一与我聊天.

var url = "http://localhost:6001/apps/My_appId/events?auth_key=My_Key";

var socketId = Echo.socketId();
var request = {
    "channel": "private-Send-Message-Channel.2",
    "name": "MessengerEvent",
    "data": {
        "msg": message
    },
    "socket_id": socketId
};
axios.post(url, JSON.stringify(request)).then((response) => {
    //Message Sent
});
Run Code Online (Sandbox Code Playgroud)

我正在尝试通知正在和我聊天的用户我还在打字.我应该使用相同的上面代码,在每个char类型上发出xhr吗?这是告知用户消息输入仍在进行中的唯一方法吗?

更新1

有没有更好的方法来发布xhr,如上所述每个按键?我的意思是如果用户键入200个字符.我会发布xhr 200次吗?

要么

我们有一个名为whisper和listenForWhisper的活动,如https://laravel.com/docs/5.6/broadcasting#client-events?我正在使用vue.js和laravel 5.6.7,没有推送器没有redis

Far*_*hir -1

是的,你是对的,它不应该在每个字符变化时发出,而是你可以使用去抖动来等待一小段时间,然后触发该函数。

我建议使用lodash库的去抖方法。应该是这样的。

请查看文档:https://lodash.com/docs/4.17.5#debounce

Laravel 的 Echo 听起来也不错,因为您无需typing在后端执行任何操作,因此仅从客户端发送到客户端比涉及服务器更好。