是否有任何基於Spring的框架向網頁發送通知?我見過http://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_sse我也在研究可以支持大多數瀏覽器的東西。 Spring中是否有任何框架或附加組件用於服務器端代碼的此功能?和任何jQuery框架來支持這個瀏覽器?任何基於Spring的Web推送都像通知一樣,我可以在網頁中更新通知而不刷新頁面?
TIA。
是否有任何基於Spring的框架向網頁發送通知?我見過http://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_sse我也在研究可以支持大多數瀏覽器的東西。 Spring中是否有任何框架或附加組件用於服務器端代碼的此功能?和任何jQuery框架來支持這個瀏覽器?任何基於Spring的Web推送都像通知一樣,我可以在網頁中更新通知而不刷新頁面?
TIA。
我已經使用了「長輪詢」方法。您基本上向服務器發送ajax請求以獲取頁面加載數據。服務器在響應之前等待數據可用。在客戶端和服務器上,可以每隔30秒左右使請求超時,以避免服務器上運行的線程太多。客戶端在超時後重新發出請求。
This site提供了使用jQuery進行長輪詢的很好的介紹。
春天並沒有真正有支持此任何明確的功能(如彙集輪詢線程)AFAIK,但你可以看看新async support in Spring MVC 3.2
你可以寫你自己的servlet如下,更多信息請參見link。因爲這與servlet一起工作,所以這也可以與spring mvc控制器一起使用。
import java.io.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class sse extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
try
{
System.out.println("SSE Demo");
response.setContentType("text/event-stream");
PrintWriter pw = response.getWriter();
int i=0;
while(true)
{
i++;
pw.write("event: server-time\n\n"); //take note of the 2 \n 's, also on the next line.
pw.write("data: "+ i + "\n\n");
System.out.println("Data Sent!!!"+i);
if(i>10)
break;
}
pw.close();
}catch(Exception e){
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
{
doPost(request,response);
}
}
我的使用方法是使用javascript的setInterval()
方法以及jQuery AJAX調用來獲取通知。 的文件準備好,把這個(在JSP中): setInterval(callMe, 30000)
在JS文件:
function callMe(){
...
$.ajax({
type: "GET",
url: "ajaxNotifications",
success: function(count){
alert("You have: " + count + "notifications now");
//stick it to #element or DIV or .class where ever you want.
}
error:function(){
...
}
});
}
終於在春季控制器:
@RequestMapping(value="/ajaxNotifications", method = RequestMetho.GET)
public @ResponseBody String getMeCount(HttpServletReuest req, HttpServletRespones resp){
//get the desired values from req
...
//fire a reuest via service layer to the database for getting notifs number
...
//Don't forget to return it as a String, be it error or count.
}
我希望這給一些想法給你或幫助其他人尋找這個問題的答案。 :)
每n秒調用一次函數不是一個好主意,可能會氾濫服務器。我已經爲我的網站嘗試過了,這不是一個好主意...... – 2015-12-29 03:45:09
我不知道在春天的地平線,但websockets支持推送通知模型。這應該有助於你搜索。 – goat 2012-08-16 17:22:27
您可以請詳細說明或任何有用的指針? – Daemonthread 2012-08-16 17:27:21
websockets是一個新的,尚未大力支持的技術。 socket.io是一個試圖提供很好的跨瀏覽器支持的項目,所以你可能想試圖站在他們的肩上。再次,我不知道彈簧如何適應這裏,但網絡瀏覽器的支持是關鍵和困難的部分,這正是我所指的。 – goat 2012-08-16 17:35:52