Hello Flask Socket.IO [1]


Hello world of Flask Socket.IO…包括服务端、Web 端和 Android 端示例。

Flask Socket.IO 官方文档
相关 Github 源码

计划是先尝试扩展成简单的自家推送服务,看网上也有人用这个做即时通讯?!
版权声明:本文为 frendy 原创文章,可以随意转载,但请务必在明确位置注明出处。


服务端 / Web前端


1.初始化 Flask 应用,配置 index.html 页面(web socket client 端示例),添加事件监听 ‘my event’(自定义事件):
from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@app.route('/')
def index():
	return render_template('index.html')
	
@socketio.on('my event')
def my_event(message):
	print(message['data'])

if __name__ == '__main__':
	socketio.run(app)
2.socket client 端 js 实现如下:
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script>
<script type="text/javascript" charset="utf-8">
    var socket = io.connect('http://' + document.domain + ':' + location.port);
    socket.on('connect', function() {
        socket.emit('my event', {data: 'I\'m connected!'});
    });
</script>
3.当应用在服务器运行起来后,在浏览器访问 ‘http://127.0.0.1:5000/’ 时,服务器会打印 ‘I’m connected!’:

java-javascript

4.如果想让这个应用在局域网内可访问,可以修改步骤 1 里的运行命令如下:
socketio.run(app, host='0.0.0.0', port=5000)

Android端


1.添加依赖:
compile ('io.socket:socket.io-client:0.8.3') {
	exclude group: 'org.json', module: 'json'
}
2.向服务器发送事件:
//a.初始化socket.io,设置链接
mSocket = IO.socket("http://10.1.1.105:5000");

//b.建立socket.io服务器的连接
mSocket.connect();

//c.对服务器发送一个"my event"事件,其值为"hi, i am android!"
JSONObject data = new JSONObject();
data.put("data", "hi, i am android!");
mSocket.emit("my event", data);


欢迎来撩

frendy

It will shine for us...