Native Socket.IO and Android
2016-05-16 16:53
465 查看
原文链接地址:http://socket.io/blog/native-socket-io-and-android/
在本教程中我们将学习如何创建一个聊天客户端用socket . io Node.
JS做为聊天服务器 ,我们的 nativate安卓客户端 !
如果你想直接跳转到代码,它在 GitHub 。
否则,继续读下去!
跟随,首先克隆存储库: socket.io-android-chat 。
应用程序具有以下特点:
发送消息到所有用户加入到房间。
每个用户加入或者离开时通知。
一个用户开始输入信息时通知。
Socket.IO提供了一个面向事件的API,可以在所有网络、设备和浏览器。
非常健壮的(甚至作品背后的公司代理!)和高性能,这是非常适合多人游戏或实时通信。
第一步是安装Java Socket。 输入输出端与 Gradle 。
对于这个应用程序,我们将依赖项添加到
我们必须记住添加网络许可
现在我们可以在android上使用socket.IO!
首先,我们必须初始化Socket.io 的一个新实例。如下:
注意,方法缓存结果,所以你可以得到一个相同的 Scocket从任何Activity或Fragment实例的url。
我们显式调用
在这个程序中,我们使用
发送数据看起来如下。 在这种情况下,我们发送一个字符串,但你也可以做JSON数据 org.json 包,甚至还支持二进制数据!
就像我前面提到的,Socket.IO 是 双向的 ,这意味着我们可以向服务器发送事件,但也随时在通信服务器可以发送事件。
然后我们可以Socket监听事件
我们监听 new message
这就是
一个侦听器的一个实例
你会注意到里面的call
Activity
UI线程里面调用,因此我们必须确保将消息添加到UI线程的视图上。
因为一个Android活动有自己的生命周期,我们也应该仔细管理套接字的状态,以避免内存泄漏等问题。
在这个程序中,我们将关闭套接字连接,删除所有的听众
调用 off
message()的侦听器事件。
如果你想探索更多的,我建议你看看:
这个程序的其他特征。他们只是实现了
套接字的细节。 IO
Java客户机。 它支持JS客户机的所有特性。
许多其他伟大的套接字。 IO实现创建的社区!
在本教程中我们将学习如何创建一个聊天客户端用socket . io Node.
JS做为聊天服务器 ,我们的 nativate安卓客户端 !
如果你想直接跳转到代码,它在 GitHub 。
否则,继续读下去!
#介绍
跟随,首先克隆存储库: socket.io-android-chat 。应用程序具有以下特点:
发送消息到所有用户加入到房间。
每个用户加入或者离开时通知。
一个用户开始输入信息时通知。
Socket.IO提供了一个面向事件的API,可以在所有网络、设备和浏览器。
非常健壮的(甚至作品背后的公司代理!)和高性能,这是非常适合多人游戏或实时通信。
#安装的依赖关系
第一步是安装Java Socket。 输入输出端与 Gradle 。对于这个应用程序,我们将依赖项添加到
build.gradle:
// app/build.gradle dependencies { ... compile 'com.github.nkzawa:socket.io-client:0.3.0' }
我们必须记住添加网络许可
AndroidManifest.xml。
<!-- app/AndroidManifest.xml --> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.INTERNET" /> ... </manifest>
现在我们可以在android上使用socket.IO!
#在Activity和Fragment使用Socket
首先,我们必须初始化Socket.io 的一个新实例。如下:import com.github.nkzawa.socketio.client.IO; import com.github.nkzawa.socketio.client.Socket; private Socket mSocket; { try { mSocket = IO.socket("http://chat.socket.io"); } catch (URISyntaxException e) {} } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mSocket.connect(); }
IO.socket()返回Socket
http://chat.socket.io使用默认选项。
注意,方法缓存结果,所以你可以得到一个相同的 Scocket从任何Activity或Fragment实例的url。
我们显式调用
connect()在这里建立连接(与JavaScript客户端)。
在这个程序中,我们使用
onCreate生命周期回调,但它实际上取决于您的应用程序。
#发射事件
发送数据看起来如下。 在这种情况下,我们发送一个字符串,但你也可以做JSON数据 org.json 包,甚至还支持二进制数据!private EditText mInputMessageView; private void attemptSend() { String message = mInputMessageView.getText().toString().trim(); if (TextUtils.isEmpty(message)) { return; } mInputMessageView.setText(""); mSocket.emit("new message", message); }
#监听事件
就像我前面提到的,Socket.IO 是 双向的 ,这意味着我们可以向服务器发送事件,但也随时在通信服务器可以发送事件。然后我们可以Socket监听事件
onCreate生命周期回调。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mSocket.on("new message", onNewMessage); mSocket.connect(); }
我们监听 new message
事件从其他用户接收消息。
import com.github.nkzawa.emitter.Emitter; private Emitter.Listener onNewMessage = new Emitter.Listener() { @Override public void call(final Object.. args) { getActivity().runOnUiThread(new Runnable() { @Override public void run() { JSONObject data = (JSONObject) args[0]; String username; String message; try { username = data.getString("username"); message = data.getString("message"); } catch (JSONException e) { return; } // add the message to view addMessage(username, message); } }); } };
这就是
onNewMessage的样子。
一个侦听器的一个实例
Emitter.Listener,必须实施
call方法。
你会注意到里面的call
()包装的
Activity
# runOnUiThread(),这是因为回调总是另一个线程从Android
UI线程里面调用,因此我们必须确保将消息添加到UI线程的视图上。
#套接字状态管理
因为一个Android活动有自己的生命周期,我们也应该仔细管理套接字的状态,以避免内存泄漏等问题。在这个程序中,我们将关闭套接字连接,删除所有的听众
onDestroy回调的活动。
@Override public void onDestroy() { super.onDestroy(); mSocket.disconnect(); mSocket.off("new message", onNewMessage); }
调用 off
()删除new
message()的侦听器事件。
#进一步的阅读
如果你想探索更多的,我建议你看看:这个程序的其他特征。他们只是实现了
发出(),
在()和
()。
套接字的细节。 IO
Java客户机。 它支持JS客户机的所有特性。
许多其他伟大的套接字。 IO实现创建的社区!
相关文章推荐
- node.js中的socket.io入门实例
- 使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
- node.js中使用socket.io制作命名空间
- node.js中的Socket.IO使用实例
- node中socket.io的事件使用详解
- 如何在node的express中使用socket.io
- node.js中使用socket.io的方法
- 基于socket.io+express实现多房间聊天
- node.js中Socket.IO的进阶使用技巧
- 基于socket.io和node.js搭建即时通信系统
- HTML5之WebSocket入门3 -通信模型socket.io
- 使用 Nginx 代理 Socket.io/WebSocket 及 负载均衡配置
- Express+Socket.io 404,400解决方案
- 基于socket.io+express实现多房间聊天
- nodejs 聊天室
- [Nodejs]利用Socket.IO配合Express4搭建即时聊天
- socket.io中emit和on的用法
- node.js+socket.io 实现一个web聊天室
- socket.io client api
- JSP+Nodejs+Socket.IO 聊天室