2014-06-15 22 views
1

我正在做一個網站的移動應用程序,他們使用Socket.io和Websocket進行通信。socket.io-java-client cookies/custom headers

我在Android上使用socket.io-java-client連接到Socket.io服務器,問題是,我不知道如何設置自定義標頭/ cookies。

這裏是代碼的樣子:

public void runIO(){ 
     try { 
      SocketIO socket = new SocketIO("http://192.168.1.60:1337"); 
      socket.connect(new IOCallback() { 
       @Override 
       public void onMessage(JSONObject json, IOAcknowledge ack) { 
        try { 
         System.out.println("Server said:" + json.toString(2)); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 

       @Override 
       public void onMessage(String data, IOAcknowledge ack) { 
        System.out.println("Server said: " + data); 
       } 

       @Override 
       public void onError(SocketIOException socketIOException) { 
        System.out.println("an Error occured"); 
        socketIOException.printStackTrace(); 
       } 

       @Override 
       public void onDisconnect() { 
        System.out.println("Connection terminated."); 
       } 

       @Override 
       public void onConnect() { 
        System.out.println("Connection established"); 
       } 

       @Override 
       public void on(String event, IOAcknowledge ack, Object... args) { 
        System.out.println("Server triggered event '" + event + "'"); 
       } 
      }); 

      // This line is cached until the connection is establisched. 
      socket.send("Hello Server!"); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
+0

Hummm,任何人只要有一個想法? :/ – Enyx

回答

2

事實上,有可用於連接前設置頭簡單功能:

addHeader(String key, String value)setHeaders(Properties headers)

您還可以使用SocketIO(final String url, Properties headers)(而不是我使用的SocketIO(final String url)):

// Haeader Properties initiation 
    private Properties headers = new Properties(); 

,然後爲例設置Cookie:

headers.setProperty("Cookie","key=data;key2=data2"); 

最後連接取代時

this.socket = new SocketIO(val); 

通過

this.socket = new SocketIO(val,this.headers);