话说 socket.io 为何这么叼? python 有类似玩意吗?

2015-02-08 01:13:32 +08:00
 fy
LZ主要使用python,会一点nodejs。

然后就遇到这个socket.io,感觉实在太叼了,完爆楼主以前见过的tornado的chatroom.

楼主于是找了一堆库,大部分是django的,更新日期基本都在大半年前,测试了一下没有一个能跑的(也许是楼主低端,有漏网的)。

于是就想问问这边有没有类似的替代品?即使有coffee,还是不想碰nodejs啊!
18686 次点击
所在节点    Python
24 条回复
noli
2015-02-08 02:25:59 +08:00
gevent?
dcoder
2015-02-08 02:28:19 +08:00
做 web python 是不如 node
mkeith
2015-02-08 02:55:20 +08:00
楼主你要做什么东西啊?
就是websocket,commet,长连接几个
yanke
2015-02-08 03:00:04 +08:00
faye ?
yangzh
2015-02-08 07:09:55 +08:00
O14
2015-02-08 09:32:16 +08:00
@dcoder 赫赫
esyed
2015-02-08 09:35:55 +08:00
楼主用ruby吧:)
aec4d
2015-02-08 11:19:52 +08:00
Flask-SocketIO 仅兼容socket.io 0.9.X
autobahn
icylogic
2015-02-08 11:41:37 +08:00
你觉得吊在哪里啊。。。 tornado + websocket 不就行了
fy
2015-02-08 12:31:51 +08:00
@yangzh gevent 说实话没怎么了解过,方式跟tornado的异步差不多么?

@mkeith 嗯,打算试试 websocket

@aec4d python web 的这些家伙好像都是基于gevent-socketio的,可是gevent-socketio都好久没更新了,是不是大家都去玩golang或者nodejs这些了?

@icylogic 全平台兼容,不支持websocket能自动切换长连接或者flash等方式,API又自然毫无PS痕迹,这还不能称吊?可用性和成熟度上完爆tornado的类似方案啊。另外tornado不打算再用,优先实践一些新东西
yangzh
2015-02-08 14:08:09 +08:00
@fy gevent 原理应该说和多进程差不多吧。反正不是 tornado 和 node 那种异步回调的方式。

反正不是公司要求的话用新东西也蛮好的。
aec4d
2015-02-08 14:36:50 +08:00
@fy 对的,而且Flask-ScoketIO 不支持python3,看看autobahn吧 挺有意思的
Smartype
2015-02-08 15:00:51 +08:00
@yangzh from gevent.monkey import patch_all; patch_all(),使用coroutine的方式。也是异步回调的无痛实现。要异步的方式写异步的话,可以试试twisted
fy
2015-02-08 19:57:01 +08:00
楼主回来了……搞了好久这玩意,蛋都碎了。
然而又弄了一圈,还是发现没有任何一个可用的库。
于是楼主找socketio的类似实现,看到有个叫SockJs的

最后楼主看到这个库:django-websocket-request
看了看名字,django,并且是使用SockJS的库

结果TMD弄下来demo一看,发现是加载了django的配置文件,其实是跑在tornado上头的!!!!
这差不多就是个sockjs.tornado的demo啊!!

最后楼主呵呵一笑,机智的强行在tornado上架了一个django wsgi,终于用上了这个功能。
gamexg
2015-02-08 22:59:04 +08:00
也在比较推送方案

看到python 与 socket.io 之间通信有

https://github.com/ziyasal/socket.io-python-emitter
使用官方的接口,但是需要 redis ,不想为了通信而在运行一个 redis 了。

https://github.com/invisibleroads/socketIO-client
socket.io python客户端库 更新日期也不晚,看接口比较适合我这种轻度使用的情况。

https://github.com/evanw/socket.io-python
socket.io 的服务器库,是通过启动一个nodejs socket.io 然后与 python tcp 通信实现的,最后更新日期4年前...

https://github.com/abourget/gevent-socketio
python gevent 实现的 socket.io 客户端,最后更新日期2014年2月,很想用这个,但是怕碰到兼容问题。

https://github.com/nkzawa/socket.io-client.java
socket.io java 客户端库,android 上面用正好。
jamiesun
2015-02-09 00:58:53 +08:00
fy
2015-02-09 21:55:50 +08:00
@gamexg 据我当时观察,这些库基本都是依赖gevent-socketio的。但是gevent-socketio半死不活。而且很多库都有诡异的兼容性问题,依赖的数个库都只能用一个特定版本,甚至这种情况下还会出问题,兼容性太差了。
其实后来看了文档,可以直接上gevent也行的,但只能是要么长连接要么websocket,对比整合到一块的socketio或者SockJs差的太远了,就放弃了。
fy
2015-02-09 21:56:58 +08:00
大概Web时代,半年不更新的库都不是很可靠了……
像是django这种更加丧心病狂的,更新一个版本号,变化大成狗了……
ltttx
2015-02-10 09:09:50 +08:00
尝试过 flask-socketio,也是基于gevent-socketio。结论是不可用,结果还是用socket.io实现了服务端。
gamexg
2015-02-10 10:50:47 +08:00
@fy 除了 gevent-socketio 其他的库和 gevent-socketio 没有关系的。

其他的大部分都是原版 socket.io 服务端,各种方式与服务器通信。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/169176

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX