繁体   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