socket.io不能同时建多个:

启动必须:socketio.run(app, debug=False,host = '0.0.0.0', port = 5000)

init_app不管用,不知道干嘛的:会报gevent的猴子错误

#!/usr/bin/env python
from threading import Lock
from flask import Flask, render_template, session, request
from flask_socketio import SocketIO, emit, join_room, leave_room, \close_room, rooms, disconnect# Set this variable to "threading", "eventlet" or "gevent" to test the
# different async modes, or leave it set to None for the application to choose
# the best option based on installed packages.
async_mode = Noneapp = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, async_mode=async_mode)
thread = None
thread_lock = Lock()def background_thread():"""Example of how to send server generated events to clients."""count = 0while True:socketio.sleep(1)count += 1socketio.emit('my_response',{'data': 'Server generated event', 'count': count},namespace='/test')@app.route('/')
def index():return render_template('index.html', async_mode=socketio.async_mode)@socketio.on('my_event', namespace='/test')
def test_message(message):session['receive_count'] = session.get('receive_count', 0) + 1emit('my_response',{'data': message['data'], 'count': session['receive_count']})print("################################")
@socketio.on('my_broadcast_event', namespace='/test')
def test_broadcast_message(message):session['receive_count'] = session.get('receive_count', 0) + 1emit('my_response',{'data': message['data'], 'count': session['receive_count']},broadcast=True)@socketio.on('join', namespace='/test')
def join(message):join_room(message['room'])session['receive_count'] = session.get('receive_count', 0) + 1emit('my_response',{'data': 'In rooms: ' + ', '.join(rooms()),'count': session['receive_count']})@socketio.on('leave', namespace='/test')
def leave(message):leave_room(message['room'])session['receive_count'] = session.get('receive_count', 0) + 1emit('my_response',{'data': 'In rooms: ' + ', '.join(rooms()),'count': session['receive_count']})@socketio.on('close_room', namespace='/test')
def close(message):session['receive_count'] = session.get('receive_count', 0) + 1emit('my_response', {'data': 'Room ' + message['room'] + ' is closing.','count': session['receive_count']},room=message['room'])close_room(message['room'])@socketio.on('my_room_event', namespace='/test')
def send_room_message(message):session['receive_count'] = session.get('receive_count', 0) + 1emit('my_response',{'data': message['data'], 'count': session['receive_count']},room=message['room'])@socketio.on('disconnect_request', namespace='/test')
def disconnect_request():session['receive_count'] = session.get('receive_count', 0) + 1emit('my_response',{'data': 'Disconnected!', 'count': session['receive_count']})disconnect()@socketio.on('my_ping', namespace='/test')
def ping_pong():emit('my_pong')@socketio.on('connect', namespace='/test')
def test_connect():print("connect")global threadwith thread_lock:if thread is None:thread = socketio.start_background_task(target=background_thread)emit('my_response', {'data': 'Connected', 'count': 0})@socketio.on('disconnect', namespace='/test')
def test_disconnect():print('Client disconnected', request.sid)if __name__ == '__main__':socketio.run(app, debug=False,host = '0.0.0.0', port = 5000)
// var socket = io.connect(location.origin + '/warn/',var socket = io.connect( 'http://127.0.0.1:9000/warn/',{'sync disconnect on unload': true// 'transports': ['websocket']});socket.on('connect', function() {alert("conn");socket.emit('alive', {data: 'ok'});
});
socket.on('join', function(response) {if (response.success) {displayWarningData(response);} else {socket.disconnect();}
});
socket.on('message', function(msg) {displayWarningData(msg);
});

flask_socketio 用法:相关推荐

  1. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  2. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

  3. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  4. pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

  5. python yield 和 yield from用法总结

    #例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...

  6. tf.nn.embedding_lookup()的用法

    函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...

  7. OpenMP用法大全

    OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...

  8. Dorado用法与示例

    Dorado用法与示例 dorado用后总结 一.dorado概念 dorado的产品全名是"dorado展现中间件".从产品形态上dorado由两部分组成,第一部分是一个具有AJ ...

  9. TensorFlow用法

    TensorFlow用法 什么是TensorFlow TensorFlow是一个开源软件库,用于使用数据流图进行数值计算.图中的节点表示数学运算,而图的边缘表示流动的多维数据数组(张量).这种灵活的体 ...

最新文章

  1. Linux LVM逻辑卷配置过程详解
  2. Arch安装zsh以及通过 Oh-My-ZSH! 开源项目的配置
  3. Elasticsearch Javascript API增删改查
  4. fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
  5. obs多推流地址_抖音obs推流直播怎么操作,抖音直播推流地址如何获取?
  6. A wizard’s guide to Adversarial Autoencoders: Part 2, Exploring latent space with Adversarial Autoen
  7. C#中谁最快:结构还是类?
  8. mysql workbench启动_怎么启动mysql workbench
  9. Qt工作笔记-以配置文件的方式动态获取Mysql数据库中的数据
  10. 多重异常处理 java
  11. debian9 linux的版本,Debian 9.4 发布,小版本更新
  12. 实验室安全,研究生生涯发展与规划平时练习答案,雨课堂/学堂云
  13. NSX-T业务转发04—— 多层Tier0Tier1路由
  14. 【Vegas原创】“光驱无法访问,函数不正确”解决方法
  15. 用WeX5制作PPT
  16. Sentinel降级策略
  17. 20155305乔磊2016-2017-2《Java程序设计》第五周学习总结
  18. 小众“上位”!双目立体视觉+激光雷达,奔驰从S级“玩到”C级
  19. PLSQL Developer-模板(Template) 使用教程
  20. FBI教你读心术 读书笔记

热门文章

  1. mysql按周统计_MySQL按周统计 WEEK 实例
  2. tap/tun设备 veth设备
  3. OpenStack AMQP与kombu
  4. java stopself_Android Service详解(二)---StartService
  5. 有不含有重复数字的数组构造二叉树_Leetcode刷题记录:构建最大数二叉树
  6. linux系统编码修改
  7. java tcp端口复用_windows server tcp端口重用问题
  8. spring_有关Spring缓存性能的更多信息
  9. sql 按 月份 结余_积累中沉淀,反思中提升——白霓镇幼儿园九月份工作总结会...
  10. linux 软件装到hone,如何在Linux系统安装Apollo