2017-01-12 17 views
0

Мне нужна архитектура для Pusher Реализация сторонних и Java-серверов для общения один-на-один.Java Server Pusher Chat: нужна архитектура для Pusher один-на-один чат на сервере java, а также андроид

ниже - это андроид-код, который отлично работает, и я получаю auth.

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

и Android-код здесь:

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"); 

Теперь мне нужно Java реализации на стороне сервера код для один к одному чата.

ответ

1

Вы можете взять ссылку здесь Pusher one to one chat structure

первого требования для реализации на стороне Java сервера необходимо добавить зависимость в pom.xml.

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

И

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

В противном случае вы получите 500 error

Если вы с использованием JAX-RS веб-служб, а также присутствия канала тогда ваш /pusher/auth услуга может быть записана в виде:

@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 для ответа –

+0

, пожалуйста, объясните подробнее об этом –

 Смежные вопросы

  • Нет связанных вопросов^_^