2013-12-10 43 views
2

我是XMPP中的新成员,但我需要让Facebook像网络应用程序上的聊天一样。 该应用程序是一个使用JSP,struts2,tiles使用Tomcat服务器编写的Java EE 7的Web应用程序。在Facebook上使用Javascript实现类似于Java的聊天使用Javascript的WebApp

我读到一些关于如何实现这个功能,我发现了几个解决方案 最好的(因为它北京时间最简单的)在我看来,使用的是: 的JavaScript的strophe和波什的技术。我想在web应用程序授权后与java的Bosh连接,接下来,我计划使用bosh会话与Strophe的bosh连接。

我的主要问题是: 将执行将工作时,访问者将改变网站? 例如。当他在主页上并且设置的时候。 并且会一直持续Bosh会话用户将被登录到webapp?

我不会使用WebSockets和Atmosphere,因为事实上我需要在项目中做出很多更改,我想我不会应付这种情况。

如果这是个好主意,你有什么建议吗? 感谢您的帮助!

编辑:

我决定与大气做到这一点,我使用的是Tomcat与Java EE7

首先,我试图运行任何气氛例子。当我在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

我有网站看起来像:混帐hub.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

+0

“最好”的解决方案可能是基于观点的,但是我会说在Erlang中编写它将是最好的解决方案,因为这就是Facebook的做法,但是websockets也是一个不错的选择,服务器端的XMLHttpRequest和Java听起来并不是最好的解决方案,但它当然是可行的。 – adeneo

回答

1

如果你在JavaScript中使用它,那么Strophe会工作。这取决于你决定什么是最适合你的网站的。在后端使用Java进行初始身份验证,然后将会话信息传递给Strophe然后附加。当用户更改页面时,您可以重新连接到现有的Bosh会话(您必须跟踪页面之间的RID)。

例如:http://metajack.im/2008/10/03/getting-attached-to-strophe/

相关问题