2016-12-16 150 views
0

我試圖將android設備連接到Spring websocke服務器。 但所有的庫給我錯誤。我在計算機和客戶端啓動我的Spring websocket服務器是在同一個網絡中,所以即時嘗試通過計算機的IP進行連接。如何將android設備連接到Spring websocket服務器

這是sevrer性能

@Configuration 
@EnableWebSocketMessageBroker 
public class WebSocketConfig 
    extends AbstractSessionWebSocketMessageBrokerConfigurer<ExpiringSession> { 

@Override 
protected void configureStompEndpoints(StompEndpointRegistry registry) { 
    registry.addEndpoint("/anveo-appserver").withSockJS(); 
} 

@Override 
public void configureMessageBroker(MessageBrokerRegistry registry) { 
    registry.enableSimpleBroker("/topic/", "/anveo/"); 
    //registry.enableStompBrokerRelay("/queue/", "/topic/", "/exchange/"); 
    registry.setApplicationDestinationPrefixes("/app"); 
    } 
} 

這是例如使用我跺腳的客戶端。

public class StompWebSocketHandler { 

private LoggerHelper logger = LoggerHelper.get(this.getClass()); 

public void connect() { 
    StompClient mStompClient; 


    mStompClient = Stomp.over(WebSocket.class, "ws://172.26.252.197:8443/app/anveo-appserver/websocket"); 

    mStompClient.lifecycle().subscribe(new Action1<LifecycleEvent>() { 
     @Override 
     public void call(LifecycleEvent lifecycleEvent) { 
      switch (lifecycleEvent.getType()) { 

       case OPENED: 
        logger.log("Stomp connection opened"); 
        break; 

       case ERROR: 
        logger.log("Stomp connection error"); 
        logger.log(lifecycleEvent.getException().toString()); 
        break; 

       case CLOSED: 
        logger.log("Stomp connection closed"); 
        break; 
      } 
     } 
    }); 
    mStompClient.connect(); 
} 

}

誰能告訴我什麼林做錯了什麼?

回答

-1

根據這一answer

簡單的例子(與retrolambda):

添加下面的類路徑中的項目:

classpath 'me.tatarka:gradle-retrolambda:3.2.0' 

添加下面的東西在你的應用的build.gradle:

apply plugin: 'me.tatarka.retrolambda' 

android { 
     ............. 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 


    dependencies { 
     ............................ 
    compile 'org.java-websocket:Java-WebSocket:1.3.0' 
    compile 'com.github.NaikSoftware:StompProtocolAndroid:1.1.5' 
} 

例如:

public class MainActivity extends AppCompatActivity { 
    private StompClient mStompClient; 
    public static final String TAG="StompClient"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button view = (Button) findViewById(R.id.button); 
     view.setOnClickListener(e-> new LongOperation().execute("")); 
    } 


    private class LongOperation extends AsyncTask<String, Void, String> { 
     private StompClient mStompClient; 
     String TAG="LongOperation"; 
     @Override 
     protected String doInBackground(String... params) { 

      mStompClient = Stomp.over(WebSocket.class, "ws://localhost:8080/app/hello/websocket"); 
      mStompClient.connect(); 

      mStompClient.topic("/topic/greetings").subscribe(topicMessage -> { 
       Log.d(TAG, topicMessage.getPayload()); 
      }); 

      mStompClient.send("/app/hello", "My first STOMP message!").subscribe(); 


      mStompClient.lifecycle().subscribe(lifecycleEvent -> { 
       switch (lifecycleEvent.getType()) { 

        case OPENED: 
         Log.d(TAG, "Stomp connection opened"); 
         break; 

        case ERROR: 
         Log.e(TAG, "Error", lifecycleEvent.getException()); 
         break; 

        case CLOSED: 
         Log.d(TAG, "Stomp connection closed"); 
         break; 
       } 
      }); 
      return "Executed"; 
     } 

     @Override 
     protected void onPostExecute(String result) { 

     } 

    } 
} 

添加Internet權限在manifest.xml中

<uses-permission android:name="android.permission.INTERNET" /> 

不要忘了在你的URL添加 「的WebSocket」。

+0

你剛剛給我從圖書館頁面的例子,我看到它,謝謝。 –