【发布时间】:2016-10-29 08:49:50
【问题描述】:
我想检查用户正在输入消息并想在我的聊天框中显示它,我知道设置数据库标志并通过 timeinterval 函数检查它,但我认为它应该是慢速方法,有什么方法可以检查它?通过用户的机器 ip/id 。
【问题讨论】:
-
使用 websocket 会更有效率。
-
怎么用?你能给我推荐一个更好的吗?
标签: javascript php sql ajax
我想检查用户正在输入消息并想在我的聊天框中显示它,我知道设置数据库标志并通过 timeinterval 函数检查它,但我认为它应该是慢速方法,有什么方法可以检查它?通过用户的机器 ip/id 。
【问题讨论】:
标签: javascript php sql ajax
您好,请使用Websocket
使用此链接这将对您有所帮助 https://www.sanwebe.com/2013/05/chat-using-websocket-php-socket
【讨论】:
您可以在您的服务器上实现 Web 套接字,这样您就可以在您的客户端和服务器之间传递事件。
您可以检查 Ratchet:http://socketo.me/ 用于 php 或 Socket.io 用于 Nodejs。
你可以在“keyup”上绑定一个事件来通知服务器输入,我建议限制事件,这样你就不会以太多的请求结束:)
【讨论】:
我认为 socket.io 是你要找的 http://socket.io/get-started/chat/
【讨论】:
我发现使用套接字是实现这一目标的唯一好方法。 https://wisembly.github.io/elephant.io/.
PHP服务器端:
use ElephantIO\Client as Elephant;
$elephant = new Elephant('http://localhost:8000', 'socket.io', 1, false, true, true);
$elephant->init();
$elephant->send(
ElephantIOClient::TYPE_EVENT,
null,
null,
json_encode(array('name' => 'foo', 'args' => 'bar'))
);
$elephant->close();
echo 'tryin to send `bar` to the event `foo`';
Socket.io 服务器端:
var io = require('socket.io').listen(8000);
io.sockets.on('connection', function (socket) {
console.log('user connected!');
socket.on('foo', function (data) {
console.log('here we are in action event and data is: ' + data);
});
});
【讨论】: