2013-04-10 1 views
1

Je suis très nouveau à l'atmosphère et java.J'essaie de créer une application simple en utilisant le cadre de l'atmosphère.Une application simple sur le cadre de l'atmosphère en utilisant Tomcat

J'ai créé un servlet appelé ChatServlet qui implémente Atmospheerhandler comme indiqué ci-dessous:

package org.atmosphere.sample; 

import java.io.IOException; 

import javax.servlet.annotation.WebServlet; 

import org.atmosphere.config.service.AtmosphereHandlerService; 
import org.atmosphere.cpr.AtmosphereHandler; 
import org.atmosphere.cpr.AtmosphereRequest; 
import org.atmosphere.cpr.AtmosphereResource; 
import org.atmosphere.cpr.AtmosphereResourceEvent; 
import org.atmosphere.cpr.AtmosphereResponse; 

/** 
* Servlet implementation class ChatServlet 
*/ 
@AtmosphereHandlerService(path="/chat") 
public class ChatServlet implements AtmosphereHandler { 
    @Override 
    public void onRequest(AtmosphereResource r) throws IOException { 
     // TODO Auto-generated method stub 
     AtmosphereRequest req = r.getRequest(); 
     if(req.getMethod().equalsIgnoreCase("GET")){ 
      r.suspend(); 
     } 
     else if (req.getMethod().equalsIgnoreCase("POST")){ 
      r.getBroadcaster().broadcast(req.getReader().readLine().trim()); 

     } 
    } 


    @Override 
    public void onStateChange(AtmosphereResourceEvent event) throws IOException { 
     // TODO Auto-generated method stub 
     AtmosphereResource r=event.getResource(); 
     AtmosphereResponse res=r.getResponse(); 

     if(r.isSuspended()){ 

//   tring message=body.substring("From the server"); 
      res.getWriter().write("Server Says:Hi"); 
      switch(r.transport()){ 
      case JSONP: 
      case LONG_POLLING: 
       event.getResource().resume(); 
       break; 
      case WEBSOCKET: 
      case STREAMING: 
       res.getWriter().flush(); 
       break; 
      default: 
       break; 

      } 
      } 
     else if(!event.isResuming()){ 
      event.broadcaster().broadcast("Say bye bye"); 
     } 
    } 


    @Override 
    public void destroy() { 
     // TODO Auto-generated method stub 

    } 


} 

est ici un fichier html:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Atmosphere Chat</title> 
<script src="jquery-1.9.1.js"></script> 
<script src="application.js"></script> 
<script src="jquery.atmosphere.js"></script> 
</head> 

    <style> 
     * { 
      font-family: tahoma; 
      font-size: 12px; 
      padding: 0px; 
      margin: 0px; 
     } 

     p { 
      line-height: 18px; 
     } 

     div { 
      width: 500px; 
      margin-left: auto; 
      margin-right: auto; 
     } 

     #content { 
      padding: 5px; 
      background: #ddd; 
      border-radius: 5px; 
      border: 1px solid #CCC; 
      margin-top: 10px; 
     } 

     #header { 
      padding: 5px; 
      background: #f5deb3; 
      border-radius: 5px; 
      border: 1px solid #CCC; 
      margin-top: 10px; 
     } 

     #input { 
      border-radius: 2px; 
      border: 1px solid #ccc; 
      margin-top: 10px; 
      padding: 5px; 
      width: 400px; 
     } 

     #status { 
      width: 88px; 
      display: block; 
      float: left; 
      margin-top: 15px; 
     } 
    </style> 
</head> 
<body> 
<div id="header"><h3>Atmosphere Chat. Default transport is WebSocket, fallback is long-polling</h3></div> 
<div id="content"></div> 
<div> 
    <span id="status">Connecting...</span> 
    <input type="text" id="input" disabled="disabled"/> 
</div> 
</body> 
</html> 

Ceci est mon fichier js:

var socket=$.atmopshere; 
debugger; 
var request ={ 
       url:'http://localhost:8080/Reverse-Ajax/' + 'chat', 
       contentType : "application/json", 
       transport :'websocket', 
       fallbackTransport:'long-polling'}; 

request.onOpen=function(response){ 
// content.html($('<p>',{text:'Atmosphere connected uisng'+ response.transport})); 
// input.removeAttr('disabled').focus(); 
// status.text('Choose name:'); 
    console.log("onopen",response); 

}; 

request.onMessage=function (response){ 
    var message=response.responseBody; 
    console.log(message); 

}; 

Et montré ci-dessous est mon web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:j2ee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2.5.xsd" version="2.5"> 
    <description>Atmosphere Chat</description> 
    <display-name>Atmosphere Chat</display-name> 
    <servlet> 
    <description>AtmosphereServlet</description> 
    <servlet-name>AtmosphereServlet</servlet-name> 
    <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class> 
    <load-on-startup>0</load-on-startup> 
    <async-supported>true</async-supported> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>AtmosphereServlet</servlet-name> 
    <url-pattern>/chat/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Je ne parviens pas à me connecter au serveur. Quelqu'un peut-il me suggérer où je vais mal? J'utilise tomcat 7 comme serveur. Merci d'avance.

Répondre

-1
  1. Mauvais: var socket=$.atmopshere;
    droit: var socket=$.atmosphere;

  2. socket.subscribe(request);:
    Vous n'êtes pas appeler connecter au serveur.

Questions connexes