新手!新手!大家让一让啊,让一让!冒犯了各路大神请见谅,哈哈!
对于新手,再直的路上都会拐几个弯。咬着牙,就是向前走!当你回头,来时的路一马平川(装X有点过了,我也还是个新手尼,直接进入正题了)。
Web似乎跟安卓没有半毛钱关系的,我也是这么想的啊,可是最近写的项目中就是要用WebSocket协议,你说咋怎?一个战队都是新手,哎!只能认了。咬着牙,就是向前走。百度一下网上大神的代码琳琅满目,眼花缭乱。大神级代码当然是有结构,有逻辑,有思想,有层次。现在我也只能瞻仰,学习。我实在写不出来!
下面写个简单的,直接用的!对于新手还是可以学习下,至于大神要有兴趣,就给小弟指点指点错误。
WebSocket协议的Url是以***ws://...***开始的,对协议分不清楚的新手可以自行百度啊,撸上主要功能代码:
首先导入jar包,Java-WebSocket-1.3.1-SNAPSHOT.jar,原生的WeSocket也是OK的,
public class MainActivity extends Activity { 
 private WebSocketClient webc; 
 private Draft connDraft=new Draft_17();// 连接协议 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 setListener(); 
 }
/**建立长连接*/
private void setListener() {
    bt1.setOnClickListener(new OnClickListener() {      
        @Override
        public void onClick(View v) {
            try {
                initClient();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

    /**关闭长连接*/
    bt2.setOnClickListener(new OnClickListener() {      
        @Override
        public void onClick(View v) {
            webc.close();

        }
    });
    /**发送消息到服务器*/
    bt3.setOnClickListener(new OnClickListener() {      
        @Override
        public void onClick(View v) {
            //连接成功后给服务器发送消息
            webc.send("hello word");            
        }
    });
}


private void initClient() throws Exception {
        //每次重连都要初始化,不然连接报错
       webc=new WebSocketClient(new URI("ws://Url"),connDraft) {        
        @Override
        public void onOpen(ServerHandshake arg0) {
            //连接成功执行的方法         
        }

        @Override
        public void onMessage(String message) {
            //服务器推送的数据
            //可以发广播,或消息,到你要的地方
        }

        @Override
        public void onError(Exception error) {
            //连接服务器异常执行这里               
        }   
        @Override
        public void onClose(int code,String reason, boolean remote) {
            //连接断开执行的方法
        }
    };
    webc.connect();
}

“`
是不是很简单,很简单,当然如果你要更进一步,这远远不够。建议:长连接最好是建立在服务中,这样不容易被干掉。当然还是要根据你的实际需求。这里还有个Bug:在onMessage()接收大点数据时会有收不到的情况,感兴趣的可以研究研究啊,不过对于只收发消息的还是搓搓有余,( 网上也有大神们自己写的java类库,用起来无鸭梨);废话也不多说了,赶紧去验证下吧!