這兩天瞭解了一下關於服務器推送的問題,在網上查了不少,相比之下comet4j比較符合本身的要求,即在http://code.google.com/p/comet4j/wiki/HelloWorld上下載了一個demo.並按相關的要求進行了配置。 下面說一下期間遇到的一個問題吧: web
demo部署好後,進行訪問出現以下圖的問題:apache
剛看到405錯誤的時候,按照習慣立馬就想到是否是doget或dopost沒有寫呢? 可是查看web.xml的時候發現不請求的是對tomcat支持的一個jar包。可是想一想jar不會出現這麼低級的錯呀.因而就開始分析配置。跨域
從頭開始提及吧.由於comet4j是在new IO方式下工做的,因而加入了tomcat
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>
由於加入的配置中port=8080,而tomcat用的也是8080,致使啓動tomcat時port衝突報錯。因而改了tomcat的端口爲8888,tomcat能夠正常啓動,頁面也能夠正常訪問,但報上面的錯誤.因而就想爲何會報405異常呢? 就這樣搗了半天,仍是沒解決,放置了一天沒去管,但但想一想仍是不甘心.今天終於解決了。服務器
由於那段錯誤,走了條彎路.總想着多是jar包問題.其實已經很明確的說明了問題源.也就是端口,個人tomcat端口是8888,配置的comet4j是在8080,那麼咱們訪問的時候也應該訪問8080.故我就當獨將報錯的那段url的端口改爲8080改去訪問,可以返回數據.呃...這就怪了,一反映就是 是否是跨域了呢?可是他們是在一個項目裏面呀,怎麼會出現跨域呢?再三的思索,comet4j的工做方式.噢、忽然豁然開朗,既然用的是new io還配置了單獨的端口,那麼訪問項目時的端口直接8080不就得了嗎? 一測試,果真是這樣。因此在comet4j中項目工做時訪問的端口是comet4j配置的端口,而不是tomcat服務器的端口。post
哈... 終於解決了,歸根仍是因爲本身沒有理解comet4j的工做方式. demo解決了,如今就等着在實際項目中用了.測試