Android使用websocket
jopen
10年前
使用library: https://github.com/tavendo/AutobahnAndroid
import com.fkapp.websocket.R; import de.tavendo.autobahn.WebSocketConnection; import de.tavendo.autobahn.WebSocketException; import de.tavendo.autobahn.WebSocketHandler; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends ActionBarActivity { private final String TAG = "MainActivity"; public static String wsUrl = "ws://ip:port/chat"; /* TODO: 运行时替换ip port */ public WebSocketConnection wsC = new WebSocketConnection(); public Handler handler = new Handler() { @Override public void handleMessage( Message msg ) { super.handleMessage( msg ); if ( msg.what == 0 ) { } } }; public void toastLog( String s ) { Toast.makeText( this, s, Toast.LENGTH_SHORT ).show(); } private void wsStart() { try { wsC.connect( wsUrl, new WebSocketHandler() { @Override public void onOpen() { toastLog( "Status: Connected to " + wsUrl ); wsC.sendTextMessage( "Hello, world!" ); } @Override public void onTextMessage( String payload ) { toastLog( "Got echo: " + payload ); } @Override public void onClose( int code, String reason ) { toastLog( "Connection lost." ); } } ); } catch ( WebSocketException e ) { e.printStackTrace(); } } @Override protected void onCreate( Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main ); wsStart(); Button wsSend = (Button) findViewById( R.id.wsSend ); wsSend.setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { wsC.sendTextMessage( "ooxx" ); } } ); } @Override protected void onDestroy() { super.onDestroy(); if ( wsC.isConnected() ) { wsC.disconnect(); } } @Override public boolean onCreateOptionsMenu( Menu menu ) { /* Inflate the menu; this adds items to the action bar if it is present. */ getMenuInflater().inflate( R.menu.main, menu ); return(true); } @Override public boolean onOptionsItemSelected( MenuItem item ) { /* * Handle action bar item clicks here. The action bar will * automatically handle clicks on the Home/Up button, so long * as you specify a parent activity in AndroidManifest.xml. */ int id = item.getItemId(); if ( id == R.id.action_settings ) { return(true); } return(super.onOptionsItemSelected( item ) ); } }