2017-01-12 1 views
0

J'ai besoin d'Architecture pour Pusher Android et Java Server Side Mise en œuvre pour le chat one-to-one. Ci-dessous est le code android cela fonctionne bien et je reçois également auth.Java Serveur Pusher Chat: besoins Architecture pour Pusher chat one-one sur le serveur Java ainsi que Android

{"event":"pusher:subscribe","data":{"auth":"9272f25541ab7b04fc60:e146b0b663fdfe276af5e4d45de6db7db272bd103414cc9525b998c5eff35268","channel_data":"{\"user_id\":\"12345\",\"user_info\":{\"name\":\"Phil Leggetter\",\"twitterId\":\"@leggetter\"}}","channel":"presence-channel"}} 

Et code Android ici:

final HttpAuthorizer authorizer = new HttpAuthorizer(Constant.BASE_URL_BHARTI + "initial/pusher/auth"); 
    //authorizer.setHeaders(getMapAuthorizationHeaders()); 
    PusherOptions options = new PusherOptions().setAuthorizer(authorizer); 
    final Pusher pusher = new Pusher("9272f25541ab7b04fc60", options); 

    pusher.connect(new com.pusher.client.connection.ConnectionEventListener() { 


     @Override 
     public void onConnectionStateChange(ConnectionStateChange connectionStateChange) { 

      Log.e("connectionStateChange", connectionStateChange.getCurrentState().toString()); 

      if (connectionStateChange.getCurrentState() == ConnectionState.CONNECTED) { 

       SOCKET_ID = pusher.getConnection().getSocketId(); 
       Log.e("SOCKET_ID", "" + SOCKET_ID); 

       channel = pusher.subscribePresence("presence-channel", new PresenceChannelEventListener() { 
        @Override 
        public void onUsersInformationReceived(String channelName, Set<User> users) { 
         Log.e("PUSHER", "" + channelName + " " + new Gson().toJsonTree(users)); 
        } 

        @Override 
        public void userSubscribed(String channelName, User user) { 
         Log.e("PUSHER", "Channel userSubscribed authorization succeeded " + channelName); 
        } 

        @Override 
        public void userUnsubscribed(String channelName, User user) { 
         Log.e("PUSHER", "Channel userUnsubscribed authorization err " + channelName); 
        } 

        @Override 
        public void onAuthenticationFailure(String message, Exception e) { 
         Log.e("PUSHER", "Channel subscription authorization failed " + e); 
        } 

        @Override 
        public void onSubscriptionSucceeded(String channelName) { 
         Log.e("PUSHER", "Channel subscription authorization succeeded " + channelName); 
         CHANELNAME = channelName; 
        } 

        @Override 
        public void onEvent(String channelName, String eventName, String data) { 
         Log.e("PUSHER", "An event with name " + eventName + " was delivered!!" + " " + data + " " + channelName); 
         Gson gson = new Gson(); 
         Message message = gson.fromJson(data, Message.class); 
         try { 
          messageAdapter.add(message); 
          messagesView.setSelection(messageAdapter.getCount() - 1); 
         } catch (Exception e) { 
          Log.e("Exception", "" + e); 
         } 
        } 
       },"my-event"); 

Maintenant, je besoin d'un code côté serveur java pour la mise en œuvre à l'un chat en l'un.

Répondre

1

Vous pouvez prendre référence d'ici Pusher one to one chat structure

1ère exigence de mise en œuvre du côté serveur java, vous devez ajouter la dépendance à pom.xml.

 <dependency> 
      <groupId>com.pusher</groupId> 
      <artifactId>pusher-http-java</artifactId> 
      <version>1.0.0</version> 
     </dependency> 

ET

 <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>4.3.5</version> 
     </dependency> 

Sinon, vous obtiendrez 500 error

Si vous êtes en utilisant les services Web JAX-RS avec la présence du canal alors votre service /pusher/auth peut être écrit:

@POST 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
@Produces(MediaType.TEXT_PLAIN) 
@Path("/pusher/auth") 
public String processMessagesAndAuthentication(MultivaluedMap<String, String> input){ 
    Pusher pusher = new Pusher("APP-ID", "PUSHER-KEY", "PUSHER-SECRET-KEY"); 
    String userId = "12345"; //any unique id 
    Map<String, String> userInfo = new HashMap<>(); 
    userInfo.put("name", "Bharti Rawat"); 
    userInfo.put("twitterId", "@leggetter"); 
    String socket_id = input.getFirst("socket_id"); 
    String channel_name = input.getFirst("channel_name"); 
    String auth = pusher.authenticate(socket_id, channel_name, new PresenceUser(userId, userInfo)); 
    return auth; 
} 
+0

thnx bh arti pour la réponse –

+0

s'il vous plaît expliquer plus à ce sujet –