これは私の への質問ですJava Chat application
。
pingAction()
アプリケーションが開始されたら、外部 Jquery でを呼び出します。
はJquery pingAction
、
function pingAction(){
$.ajax(
{
type: "post",
url: "PingAction",
async: false,
data : "userId="+encodeURIComponent(userId)+"&secureKey="+encodeURIComponent(secureKey)+"&sid="+Math.random() ,
cache:false,
complete: pingAction,
timeout: 5000 ,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
scriptCharset: "utf-8" ,
dataType: "html",
error: function (xhr, ajaxOptions, thrownError) {
alert("xhr.status : "+xhr.status);
if(xhr.status == 12029 || xhr.status == 0){
//alert("XMLHttp status : "+xhr.status);
$("#serverMsg").css("backgroundColor" , "yellow");
$("#serverMsg").text("Your Network connection is failed !");
$("#serverMsg").show();
}
//setTimeout('pingAction()', 5000);
xhr.abort();
},
success: function( responseData , status){
if($("#serverMsg").text() == "" || $("#serverMsg").text() == "Your Network connection is failed !"){
disableServerMessage();
}
if(responseData != "null" && responseData.length != 0 && responseData != null){
var stringToArray = new Array;
stringToArray = responseData.split("<//br//>");
var len = stringToArray.length;
for(var i=0;i<len-1;i++){
getText(stringToArray[i]);
}
}
//setTimeout('pingAction()', 5000);
}
}
);
}
私のPingAction Servlet
意志は、
public class PingAction extends HttpServlet {
private static final long serialVersionUID = 1L;
private String secureKey;
private String userId;
private int fromPosition ;
private FlexChatProtocol protocol = null;
private Ping ping = null;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("UTF-8");
PrintWriter out = response.getWriter();
request.setCharacterEncoding("UTF-8");
secureKey = request.getParameter("secureKey");
userId = request.getParameter("userId");
CustomerInfo customer = ApplicationInfo.customerDetails.get(userId);
if(customer != null){
fromPosition = customer.getFromPosition();
}
if(ApplicationInfo.flexProtocol != null ){
protocol = ApplicationInfo.flexProtocol;
ping = new Ping();
ping.sendPing(secureKey, userId, fromPosition+1, protocol, serverMessage);
if(customer != null){
message = customer.getFullMessage();
}
out.println(message);
}
}
}
を使用する前にLong Poling
、pingAction() in javaScript
for every5 seconds
を使用しsetTimeInterval()
て接続を更新し、サーバー メッセージを取得します。
LONG POLLING concept
次に、チャット アプリケーションでを使用する必要があります。そのため、Jquery pinAction()
上記の内容を変更しました。
LONG POLLING
を使用してどのように達成できJQUERY
ますか?
私たちのスタックメンバーが私を助けてくれることを願っています!