0

我正在使用 Netbeans 使用 Java EE 创建一个聊天 Web 应用程序,我使用 jquery 函数连接到一个 Servlet,它连接到数据库以获取一些信息,例如我设法使用在线用户列表更新一个 DIV,每个 5秒。

 setInterval(function(){ 
    $.get('MyServlet', {
            roomId: roomToJoin
        }, function (responseText) { 

    //Some codes Here
    //responseText is returned as a chain of user names
    //they get separated using JavaScript codes and then appended in a div

    });  //Update the list of Online users each 5 secondes

    },5000);

但是用同样的技术来更新用户写的消息有点困难,但可能,但我在搜索过程中发现的更聪明的技术是彗星技术,或者反向 ajax,或者长轮询,我发现的唯一例子是Counter的例子,全是网络,我真的没看懂,甚至达不到我的要求,不知道有什么好的方法,不知道是否应该存储消息在数据库中再次获取,我真的不知道使用彗星的代码,希望你们能帮助我,因为这是聊天应用程序的核心,其余的很容易。

4

1 回答 1

0

建立一个基于网络的实时聊天室并不是一件容易的事。尤其是很难处理 Ajax/Comet 技术问题。您可以使用EZComet(我是创始人)、PusherPubnub等消息推送云服务。您可以在此处参考一个非常简单的聊天室示例

要在您的 javascript 客户端上接收消息,您可以像这样调用 JS API。当收到新消息时,会调用你的回调函数,你可以在那里做相应的反应,比如显示消息,更新用户列表

ez_comet.subscribe({
    user_name: 'demo', 
    channel: 'chatroom', 
    callback: callback,
    auto_tick: false,
    msg_type: 'json'
});

要提交聊天室消息,您可以通过 API 向频道推送消息。PHP 中的示例

<?php

// Include ezcomet PHP SDK, it can be found here 
// https://ezcomet.com/tools/php_sdk
include 'ezcomet.php';

$username = $_POST['username'];
$message = $_POST['message'];
$msg = array(
    'username' => $username,
    'message' => $message
);

$tick = push_msg('your api key', 'demo', 'chatroom', @json_encode($msg));
echo "tick: $tick";

?>
于 2012-08-12T15:37:35.730 回答