这年头做实时站应该一开始就 node.js + socket.io。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
cheshirecat
V2EX    程序员

这年头做实时站应该一开始就 node.js + socket.io

  •  
  •   cheshirecat
    cheshirecats 2012-08-23 13:09:39 +08:00 10039 次点击
    这是一个创建于 4871 天前的主题,其中的信息可能已经有所发展或是发生改变。
    当初早知道这么简单的话就不用 PHP 了,哈哈。

    研究了一下,PHP 和 node.js 之间传 session 之类比较麻烦,于是用 Ratchet 给 PHP 加 WebSocket,试了试还不错。
    22 条回复    1970-01-01 08:00:00 +08:00
    ikbear
        1
    ikbear  
       2012-08-23 13:19:51 +08:00   1
    最近几行php代码就把我恶心到了。你要用node.js干嘛还用php呢?
    cheshirecat
        2
    cheshirecat  
    OP
       2012-08-23 13:27:44 +08:00
    @ikbear 没办法,当时不知道 node.js 好用。现在已经写了这么多 php ,也懒得迁移了。
    cheshirecat
        3
    cheshirecat  
    OP
       2012-08-23 13:30:13 +08:00
    上面迁移的意思是用 node.js 重新写原来的 php 代码。
    dotcoo
        4
    dotcoo  
       2012-08-23 14:09:13 +08:00
    nodejs业务逻辑复杂了会死人的.
    fsw90628
        5
    fsw90628  
       2012-08-23 14:18:40 +08:00
    @dotcoo 所以 Tornado 看上去是不错的选择。
    hyq
        6
    hyq  
       2012-08-23 14:43:47 +08:00
    html页面不是很好弄,nodejs程序修改后得重启nodejs,nodejs里面如果有个未处理的错误,那么整个webserver就躺下了.这是我个人用socket.io做了一个聊天服务器的感受
    hyq
        7
    hyq  
       2012-08-23 14:48:58 +08:00
    @cheshirecat 实时站的话,的确nodejs是首选
    willmouse
        8
    willmouse  
       2012-08-23 14:50:18 +08:00
    @hyq google node-dev

    还有你说有个未出理错误server就down了是你异常处理和server的设置有问题
    funcman
        9
    funcman  
       2012-08-23 14:51:35 +08:00
    @hyq node.js绝对可以做到热更新,但是需要写一些代码。
    hyq
        10
    hyq  
       2012-08-23 15:12:07 +08:00
    @willmouse 异常处理的问题,比如说mysql连接超时了,如果没有处理这个错误的话,整个服务器进程就退出了
    hyq
        11
    hyq  
       2012-08-23 15:13:15 +08:00
    @funcman 如何热更新?
    spritevan
        12
    spritevan  
       2012-08-23 17:35:02 +08:00   1
    hyq
        13
    hyq  
       2012-08-23 23:13:52 +08:00
    @spritevan 不错,很好很大
    kernel1983
        14
    kernel1983  
       2012-08-23 23:19:18 +08:00
    node稳定还需要年头, ruby这么多年下来, 没个rvm还不是到处报错

    做实时还是直接tornado靠谱
    cheshirecat
        15
    cheshirecat  
    OP
       2012-08-24 10:29:53 +08:00
    tunetoystory
        16
    tunetoystory  
       2012-08-24 10:32:59 +08:00
    @cheshirecat 楼主头像看上去在闪烁耶
    kernel1983
        17
    kernel1983  
       2012-08-24 10:46:03 +08:00
    要有智慧的看图表啊, python没有v8快是肯定的, 这个是语言设计的哲学, 另外tornado和nodejs都是玩异步的, erlang是micro thread, 正大光明的比tornado至少要多进程才对
    bhuztez
        18
    bhuztez  
       2012-08-24 11:06:11 +08:00
    @kernel1983

    > python没有v8快是肯定的, 这个是语言设计的哲学

    其实只是没JIT而已。用pypy跑这种Hello,world级的测试,tornado可以再快1.5-2倍的样子,这样tornado和node.js大致上是在一个数量级上的。

    http://casbon.me/what-will-pypy-do-for-your-website-benchmarki


    > 正大光明的比tornado至少要多进程才对

    那里面写了

    > Erlang was launched with Kernel Polling enabled, and with SMP disabled so that a single CPU was used by all the libraries.

    所以,其实tornado和node.js已经占便宜了。毕竟人家Erlang是有实现SMP逻辑的,现在只是运行期关掉,而不是编译的时候关掉,所以运行的时候还是有一点点没必要的开销的。

    另外,有JIT,太占便宜了,因为JIT一般是在单独的线程里干活的,而Erlang关了SMP只能用一个CPU。要公平的话,Erlang的得用hipe先编译好再跑。

    所以,benchmark已经严重倾向tornado和node.js了,它们还是惨败。
    kernel1983
        19
    kernel1983  
       2012-08-24 12:43:19 +08:00
    好吧, Erlang确实很快, 10k+让人很吃惊

    我们也可以看到另外一个事实就是Tornado和Nodejs跑到Erlang使用者的电脑上就很自然的变慢了, 其他的地方可以看到tornado 4000+的测试现在就只有1500了

    最后, 原来我们已经不在讨论长链接问题了, 那么就改日聊吧
    liuyanghejerry
        20
    liuyanghejerry  
       2012-08-24 13:35:20 +08:00
    个人感觉socket.io除却出色的完成websocket本身之外,最大的特点就是使用非常简单明了。本来很倾向使用nodejs+socket.io的,但是后来由于项目性质特殊不得不抛弃了这一套组合拳。
    crapthings
        21
    crapthings  
       2012-08-25 22:40:33 +08:00
    meteor.js 吧还是
    cheshirecat
        22
    cheshirecat  
    OP
       2012-08-26 01:48:36 +08:00
    摆弄出来一个方案。

    连接 WebSocket 时通过虚拟路径传递 Session ID 给服务端,然后服务端可以直接从 MemcacheD 里把 Session 的具体资料读出来 :D :D 于是可以真正做点事情了。

    鄙视meteor.js以及pusher等等第三方服务 :D :D 贵得要死。这个东西完全可以自己做。

    正在研究消息队列化方案。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4914 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 09:33 PVG 17:33 LAX 01:33 JFK 04:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86