导语: 以前接手过一个H5与安卓客户端进行长连接的及时聊天直播项目,于是今天抽空整理一下与H5长连接的笔记,希望朋友们能够更快速的跳过这些坑。 举例说明: 这个项目是一个h5实现及时聊天页面,功能类似直播中的与直播人员互动,聊天。 我们在开发客户端时候,要与网页端的H5进行互动,但是我们一般的长连接还是Socket之类的,如何与H5与Android 客户端互动呢,用WebSocket。 WebSocket简介: github地址:
https://github.com/crossbario/autobahn-android //简单阐述了Autobahn能够实现Android客户端 与webSocket这种协议 Autobahn|Android is a subproject of the Autobahn project and provides an open-source implementation The WebSocket Protocol The Web Application Messaging Protocol (WAMP) for Android. WebSocket allows bidirectional real-time messaging on the Web. WAMP provides asynchronous Remote Procedure Calls and Publish & Subscribe for applications in one protocol. WAMP is ideal for distributed, multi-client and server applications, such as multi-user database-drive business applications, sensor networks (IoT), instant messaging or MMOGs (massively multi-player online games) . Note: Autobahn|Android implements version 1 of WAMP. Current versions of the other Autobahn project libraries already provide implementations of version 2 of the protocol, with substantially expanded capabilities. An update to Autobahn|Android is under development.项目说明: 这个Autobahn类似于是跟各种稀奇古怪的服务端进行长连接的工具,比如WAMP(Windows 链接协议)和H5长连接 协议。 贴一片实例代码:
//初始化 private final WebSocketConnection mConnection = new WebSocketConnection(); //发送消息方法 if (mIsConnected) { mConnection.sendTextMessage(s); Log.i("dsvdfvbdfvbdfgbfgb"," ggsssss "+s ); }else { Toast.makeText(EchoActivity.this,"长连接失败,请点击重新连接!",Toast.LENGTH_SHORT).show(); start(); } //实现方法 private void start() { try { mConnection.connect(这里填入你的长连接地址,null, new WebSocket.ConnectionHandler() { //连接成功 @Override public void onOpen() { //尝试发送一条消息给服务端 mConnection.sendTextMessage("Hello, world!"); //连接成功 mIsConnected = true; } //接受长连接推送来的消息 @Override public void onTextMessage(String payload) { String message = "ECHO: " + payload; Log.i("mMessageIndex", " payload "+payload); } @Override public void onRawTextMessage(byte[] payload) { } @Override public void onBinaryMessage(byte[] payload) { } //连接断开时候监听事件 @Override public void onClose(int code, String reason) { Log.d(TAG, "Connection lost."); Log.d("onClose", message); } },new WebSocketOptions(),headers); } catch (WebSocketException e) { Log.d(TAG, e.toString()); } }备注: 在这几个方法里面实现聊天的逻辑,就通过WebSocket实现了H5与Android客户端的链接啦,只能说好简单!