Hello Flask Socket.IO [5]

栏目: 后端 · 发布时间: 6年前

内容简介:Hello Flask Socket.IO [5]

Hello Flask Socket.IO 系列文章五。本文基于前面的 Demo 搭建简单的推送 Socket 服务,完成服务器端和 Android 端的交互。

相关文章:

Hello Flask Socket.IO [1] Hello Flask Socket.IO [2] Hello Flask Socket.IO [3] Hello Flask Socket.IO [4] 相关 Github 源码 版权声明:本文为 frendy 原创文章,可以随意转载,但请务必在明确位置注明出处。

本文基于文章二 Hello Flask Socket.IO [2] 的广播和点对点通信来实现推送。指导思想是少即是多,只搭建 Socket 服务,用于 Server 端和用户 Client 端之间的通信转发。

对于推送 Socket 服务而言,根据业务需求,需要完善注册交互,添加反馈交互。另外也需要添加一个提供给 Server 端的消息发送接口,并通过 Server 提供的 ICE 接口向 Server 同步数据。具体交互如下图所示,本文主要是关于这些新增交互或接口的笔记,广播和点对点通信请参考文章二。

Hello Flask Socket.IO [5]

服务器端

1. 完善注册交互

@socketio.on('register')
def do_register(message):
	print('uid=%s' % (message['data']))
	emit('_register', {'token': get_token(message['data'])})
	# 调用 Server ICE 接口同步数据即可

2. 添加反馈交互

@socketio.on('report')
def do_report(message):
	print(message['status'])
	# 调用 Server ICE 接口同步数据即可

3. 添加消息发送接口

@app.route('/message', methods=['POST'])
def send_message():
	data = request.data
	print(data)
	# 广播或点对点发送消息即可
	return "OK"

20170523 - 批注:这里有安全问题,对后台对用户用了同个端口。解决办法的话,对后台或者用 ICE 接口来替换,或者用 namespace 来区分

Android 前端

1. 修改注册交互

//注册请求的回调监听
mSocket.on("_register", onRegister);

//向服务器端发送注册请求
mSocket.emit("register", data);

private Emitter.Listener onRegister = new Emitter.Listener() {
	@Override
	public void call(final Object... args) {
		...
		JSONObject data = (JSONObject) args[0];
		TOKEN = data.getString("token");
		mISocket.onRegistered(TOKEN);
		//注册点对点接收监听器,以便实现点对点消息发送
		Handler mainHandler = new Handler(Looper.getMainLooper());
		mainHandler.post(new Runnable() {
			@Override
			public void run() {
				mSocket.on(TOKEN, onP2PMessage);
			}
		});
		...
	}
};

2. 添加反馈交互

private Emitter.Listener onBroadcast = new Emitter.Listener() {
	@Override
	public void call(final Object... args) {
		...
		mISocket.onMessage(data.getString("data"));
		mSocket.emit("reporter", status);
		...
	}
};

private Emitter.Listener onP2PMessage = new Emitter.Listener() {
	@Override
	public void call(final Object... args) {
		...
		mISocket.onMessage(data.getString("data"));
		mSocket.emit("reporter", status);
		...
	}
};

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏化革命:未来商业模式的驱动力

游戏化革命:未来商业模式的驱动力

[美]盖布·兹彻曼、[美]乔斯琳·林德 / 应皓 / 中国人民大学出版社有限公司 / 2014-8-1 / CNY 59.00

第一本植入游戏化理念、实现APP互动的游戏化商业图书 游戏化与商业的大融合、游戏化驱动未来商业革命的权威之作 作者被公认为“游戏界的天才”,具有很高的知名度 亚马逊五星级图书 本书观点新颖,游戏化正成为最热门的商业新策略 游戏化是当今最热门的商业新策略,它能帮助龙头企业创造出前所未有的客户和员工的参与度。商业游戏化策略通过利用从游戏设计、忠诚度计划和行为经济学中所汲取......一起来看看 《游戏化革命:未来商业模式的驱动力》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码