我已经使用彗星技术实现了一个聊天系统。这是链接(参见 ajax 的第二种方法)comet with ajax
当我使用一个帐户发送消息时,我将它与 2 个浏览器和 2 个帐户一起使用,另一个接收者以自己的名称接收它。这是代码:
handleResponse: function(response)
{
$('chat_id_box').innerHTML += '<u class="myId">' + response['name'] + '</u>: <p class="talk">' + response['msg'] + '</p></br>';
},
这是控制器
$filename = dirname(__FILE__).'./data.txt';
$name = $this->session->userdata('name');
// store new message in the file
$msg = isset($_GET['msg']) ? $_GET['msg'] : '';
if ($msg != '')
{
file_put_contents($filename,$msg.$name);
die();
}
// infinite loop until the data file is not modified
$lastmodif = isset($_GET['timestamp']) ? $_GET['timestamp'] : 0;
$currentmodif = filemtime($filename);
while ($currentmodif <= $lastmodif) // check if the data file has been modified
{
usleep(10000); // sleep 10ms to unload the CPU
clearstatcache();
$currentmodif = filemtime($filename);
}
// return a json array
$response = array();
$response['msg'] = file_get_contents($filename);
$response['name'] = file_get_contents($filename);
$response['timestamp'] = $currentmodif;
echo json_encode($response);
flush();
假设我输入xyz: helo world! 然后在第二个浏览器中,我收到这条消息为abc:helo world! abc和xyz是 2 个用户。代码中的问题是什么?我无法理解。谢谢..