簡體   English   中英

使用Javascript在Java WebApp上實現類似聊天的Facebook

[英]Implementation of facebook like chat on Java WebApp with Javascript

我是XMPP的新手,但我需要使Facebook像在Web應用程序上聊天一樣。 該應用程序是一個使用Tomcat服務器,用Java EE 7和JSP,struts2,tiles編寫的webapp。

我讀了一些有關如何實現該功能的內容,我發現很少有最好的解決方案(因為它最簡單)是:JavaScript strophe和Bosh技術。 在Web應用程序中獲得授權后,我想從Java與Bosh連接,接下來,我計划使用Bosh會話與Strophe的Bosh連接。

我的主要問題是:訪問者更改網站后,實施會起作用嗎? 例如。 當他進入主頁並瀏覽設置時。 並且Bosh會話是否會一直持續到用戶將登錄Webapp的時間?

我不會使用WebSockets和Atmosphere,因為我需要在項目中進行很多更改,而我認為我不會對此進行應對。

如果有個好主意,您有什么建議嗎? 感謝幫助!

編輯:

我決定用Atmosphere來做,我在Java ee7中使用tomcat

首先,我嘗試運行任何氣氛示例。 當我在tomcat上將其作為新應用程序運行時,它可以工作,但是當我使用struts將其添加到我的應用程序中時,web.xml可能出現問題我的文件如下所示:

web.xml中:

    <!-- Atmosphere -->
    <servlet>
        <description>AtmosphereServlet</description>
        <servlet-name>AtmosphereServlet</servlet-name>
        <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
        <async-supported>true</async-supported>
        <!-- Use it with mvn jetty:run -->
        <init-param>
            <param-name>org.atmosphere.cpr.packages</param-name>
            <param-value>org.atmosphere.samples</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>
  <!-- Atmosphere Mapping-->
   <servlet-mapping>
        <servlet-name>AtmosphereServlet</servlet-name>
        <url-pattern>/chat/*</url-pattern>
    </servlet-mapping>

    ...     

    <!-- Filters -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>actionPackages</param-name>
            <param-value>com.comarch</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>

    ...

沒有第一部分(使用大氣,一切正常)

下一部分是從示例中獲取的websocket類: https : //github.com/Atmosphere/atmosphere-samples/blob/master/samples/websocket-chat/src/main/java/org/atmosphere/samples/chat/WebSocketChat的.java

我的網站看起來像這樣:github.com/Atmosphere/atmosphere-samples/blob/master/samples/websocket-chat/src/main/webapp/index.html

和我的application.js看起來像:

https://github.com/Atmosphere/atmosphere-samples/blob/master/samples/websocket-chat/src/main/webapp/jquery/application.js

我將15行更改為直接鏈接:

var request = { url: 'http://localhost:8081/chat/',

當我訪問網站時,我可以在控制台中看到錯誤:

WebSocket連接到ws://localhost:8081/chat?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.1.2-jquery&X-Atmosphere-Transport=websocket&X-Cache-Date=0&Content-Type=application%2Fjson&X-atmo-protocol=true failed: Error during WebSocket handshake: Unexpected response code: 501

如果您可以使用JavaScript進行操作,那么Strophe將起作用。 由您來決定最適合您的網站。 在后端使用Java進行初始身份驗證,然后將會話信息傳遞給Strophe,然后附加。 用戶更改頁面時,您可以重新連接到現有的Bosh會話(您必須跟蹤頁面之間的RID)。

有關示例,請參見: http//metajack.im/2008/10/03/getting-attached-to-strophe/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM