文档章节

Flask-SocketIO中实例代码的阅读笔记

junanhonglei
 junanhonglei
发布于 2014/10/11 00:03
字数 401
阅读 4332
收藏 1

 Flask-SocketIO:

     支持没有WebSocket支持的Old浏览器

     支持SocketIO Javascript 库的message passing protocol

  -----------------------------------

  SocketIO的核心概念:

      命名空间 -> 事件类别

  ------------------------------------

  说明:整个测试程序只使用了一个命名空间:/test

   index.html

    一:客户端程序的处理流程

    1,建立连接,注册命名空间

    var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);

    2,注册监听的事件,如下面的'my response' (示例程序就这一个服务器发送的事件类别)

    socket.on('my response', function(msg) {

                $('#log').append('<br>Received #' + msg.count + ': ' + msg.data);

            });

   3,  向服务器发送事件,如下的事件类别为 'my event'

     socket.emit('my event', {data: $('#emit_data').val()});

 ---------------------

    服务端的处理:

      1,就干一件事,将一个命名空间(可选,如下的'/test')的一个事件类别(如下的'my event')对应一个处理函数(下面的test_message)

      2,注意服务器发送的是receive_count事件,并没有指定命名空间。可以使用room或者broadcast参数。

      3,不论room还是broadcast的缺点就是自身也会收到该消息,这在协调办公等应用里面会产生问题,需要自己实现?

      

@socketio.on('my event', namespace='/test')

def test_message(message):

    session['receive_count'] = session.get('receive_count', 0) + 1

    emit('my response',

         {'data': message['data'], 'count': session['receive_count']})

         

          emit('my response',

         {'data': message['data'], 'count': session['receive_count']},

         broadcast=True)

         

-----------------

存在的问题:

  在Windows8/Python2.7 64bit下,

   1,  WingIDE下无法调试,实际上有两个python.exe进程,设置的断点无效。

     原因:flask_socketio/__init__.py run()函数调用了run_with_reloader

      解决方法:将app.py中的app.debug = True这行注释掉。

       因为开启了Debug模式所以导致了无法调试,真是。。。


© 著作权归作者所有

junanhonglei
粉丝 8
博文 104
码字总数 40181
作品 0
鄂州
架构师
私信 提问
Flask-SocketIO 简单使用指南

Flask-SocketIO 使 Flask 应用程序能够访问客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用 Javascript,C ++,Java 和 Swift 中的任何 SocketIO 官方客户端库或任何兼容的客户...

yongxinz
2018/11/01
0
0
Flask源码阅读笔记(一)

作者:acezio 链接:https://zhuanlan.zhihu.com/p/21358368 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 flask的url route管理 定义flask实例的rou...

acezio
2016/06/16
133
0
flask web development 阅读笔记

在flask应用中,所有的flask应用都必须创建一个应用实例。web服务器把它接收的来自客户端的请求通过WSGI的协议传递给这个对象以进行处理。这时候,它会提供一种叫上下文的神奇环境,它能让一...

ne0
2014/10/29
721
0
如何实现站内信的功能

flask框架下,使用flask-socketio实现站内信的功能,使用情景:在一片文章下,a回复了,b回复了a的内容,此时a在登陆状态下,可以在右上角看到红色的星号消息,点击链接直接可以到达文章详情...

lemonwater
2018/10/18
439
1
Python flask socketio

官网 http://flask-socketio.readthedocs.io/en/latest/ https://github.com/miguelgrinberg/Flask-SocketIO 简单使用 监听客户端发送的事件,如果客户端有参数,则对应的处理函数也需要接受...

阿豪boy
2018/03/15
50
0

没有更多内容

加载失败,请刷新页面

加载更多

架构师的十大学习步骤

架构师有十大步第一步: 学习两种抽象视角 (Abstraction View) 架构师的第二步: 关心下层的变动自由度 ( 没钱就改版,改版就有钱 ) 架构师的第三步: < 系统架构控制力 > 支撑 < 商业竞争话...

请叫我小可爱呀
4分钟前
1
0
node处理静态模板无法自动引入问题

本文是在参考张鑫旭大神的文章所写,对其进行了一些优化,在原文中只对入口文件 import/import-example.html做了监控,当footer.html发生改变时,最终文件并不会发生变化,此时需要对import/...

litCabbage
4分钟前
1
0
关于PHP的命名空间

这篇文章介绍的内容是关于PHP的命名空间 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 什么是PHP命名空间 PHP手册:从广义上来说,命名空间是一种封装事物的方法。在很多...

chenhongjiang
6分钟前
1
0
sync.Once 多次调用一次执行

demo package mainimport ("fmt""sync")func main() {var once sync.OnceonceFunc := func() {fmt.Println("this func do once")}done := make(chan bo......

李琼涛
6分钟前
1
0
AliOS Things 3.0应用笔记:http client简单应用

简介 AliOS Things 3.0版本于9月27日在云栖大会正式发布,在新版本中带来了全新的应用开发框架,帮助用户快速构建自己的应用。使用户可以更专注于自身应用的开发。 AliOS Things 3.0版本新增...

阿里云官方博客
14分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部