2012-08-10 87 views
0

我正在使用Netbeans創建一個使用Java EE的聊天Web應用程序,我使用jquery函數連接到一個Servlet,它連接到數據庫以獲取一些信息,例如我設法每5秒更新一次在線用戶列表的DIV。如何在JSP聊天應用程序中使用Comet

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例子,它遍佈整個網絡,我真的不明白,甚至不符合我的要求,我不知道這樣做的好方法是什麼,不知道消息是否應該存儲在數據庫中並再次提取,我真的不知道使用Comet的代碼,我希望你能幫助我,因爲這是聊天應用程序的核心,其餘都很簡單。

回答

0

建立一個基於網絡的實時聊天室並不是一件容易的事。特別是很難處理Ajax/Comet技術問題。您可以使用消息推送雲服務,如EZComet(我是創始人),PusherPubnub。您可以參考一個非常簡單的聊天室示例here

要在您的JavaScript客戶端上接收消息,可以調用JS API。當有收到新的消息,你的回調函數將被調用,你可以做相應的反應出現,如顯示的消息,更新用戶列表

要提交一個聊天室的消息,你可以把一個消息通過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"; 

?> 
中的示例