2 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
目前web上的消息通訊方式主要有以下幾種。
輪詢,長連接,websocket
輪詢:隔一段時(shí)間訪問服務(wù)器,服務(wù)器不管有沒有新消息都立刻返回。
長連接:頁面向服務(wù)器發(fā)出請(qǐng)求,由服務(wù)器決定什么時(shí)候返回。(如果有新消息則立刻返回,沒有的話就保持連接,直到有新消息才返回)
websocket:類似Java Socket,由Http請(qǐng)求模擬實(shí)現(xiàn)的socket。
要實(shí)現(xiàn)長連接的關(guān)鍵就是: 由服務(wù)器端決定什么時(shí)候返回?cái)?shù)據(jù)。比如在servlet中。
doGet(...){
...
Thread.sleep(30000);
return ...
}
這就是一個(gè)長連接的例子,只是沒有任何意義而已。
你要做的就是在doGet中阻塞住,
while(!hasNewMsg){
sleep(500)
}
return newMsg...
當(dāng)然你的ajax超時(shí)時(shí)間要設(shè)置長一點(diǎn)。
如果可以的話,最好可以使用websocket。
添加回答
舉報(bào)