我成功地做出了一個簡單而小巧的例子,它集成了Spring MVC和Atmosphere框架。它工作得很好,但它的行爲方式我不明白:大氣與Spring MVC框架的集成:
在我的嘗試示例中,我試圖廣泛每隔10秒廣播Date
字符串,所以如果我在10:10:20啓動我的應用程序,下一條消息將是10:10:30等....
但代替它我在這段時間內有4個回調,所以我的消息流如下所示:10:10:20,10:10: 21,10:10:22,10:24,10:30。這種行爲會以相同的時間間隔順序發生:
爲什麼我在10秒內有4次回調,而不是每10秒鐘有一次回調?
我的相關代碼:
@RequestMapping(value="/websockets", method=RequestMethod.GET)
@ResponseBody
public void websockets(final AtmosphereResource<HttpServletRequest,HttpServletResponse> event) {
final HttpServletRequest req = event.getRequest();
final HttpServletResponse res = event.getResponse();
event.suspend();
final Broadcaster bc = event.getBroadcaster();
bc.scheduleFixedBroadcast(new Callable<String>() {
public String call() throws Exception {
return (new Date()).toString();
}
}, 10, TimeUnit.SECONDS);
}
,並在我的客戶端代碼我做了以下內容:
<script type="text/javascript">
$(document).ready(function() {
var callbackAdded = false;
function callback(response)
{
$.atmosphere.log('info', ["response.state: " + response.state]);
$.atmosphere.log('info', ["response.transport: " + response.transport]);
if (response.transport != 'polling' && response.state != 'connected' && response.state != 'closed') {
$.atmosphere.log('info', ["response.responseBody: " + response.responseBody]);
if (response.status == 200) {
var data = response.responseBody;
if (data) {
$("#date").text(data);
}
}
}
}
$.atmosphere.subscribe("websockets",
!callbackAdded? callback : null,
$.atmosphere.request = {transport: 'websocket'});
connectedEndpoint = $.atmosphere.response;
callbackAdded = true;
});
</script>
問題是:我的web服務器運行在代理之後。我正在使用System.setProperty(「http.proxyHost」,「代理」); System.setProperty(「http.proxyPort」,「80」);設置代理。現在,即使瀏覽器無法顯示來自Web服務器的信息,它也能正常工作。 – vasim
嗨,我是新的氣氛。我想在Spring 3中實現氛圍。我不知道如何配置它。春季3沒有任何適當的配置氛圍指導。我已經在客戶端實現了atmospehere的控制器方法和jquery,就像你一樣。現在它顯示類似org.springframework.beans.BeanInstantiationException的錯誤:無法實例化bean類[org.atmosphere.cpr.AtmosphereResource]:指定的類是一個接口。如果你能幫我配置它。 –
我不知道如何配置web.xml和spring-servlet.xml來配置氣氛。我有同樣的要求(在網頁上顯示每5秒鐘的時間),因爲你有。 –