安卓中使用WebSocket建立简单实用的长连接

新手!新手!大家让一让啊,让一让!冒犯了各路大神请见谅,哈哈!
对于新手,再直的路上都会拐几个弯。咬着牙,就是向前走!当你回头,来时的路一马平川(装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类库,用起来无鸭梨);废话也不多说了,赶紧去验证下吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值