• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cheshirecat
V2EX  ›  程序员

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

  •  
  •   cheshirecat ·
    cheshirecats · Aug 23, 2012 · 10829 views
    This topic created in 5188 days ago, the information mentioned may be changed or developed.
    当初早知道这么简单的话就不用 PHP 了,哈哈。

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

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

    做实时还是直接tornado靠谱
    tunetoystory
    tunetoystory
    Aug 24, 2012
    16
    @cheshirecat 楼主头像看上去在闪烁耶
    kernel1983
    kernel1983
    Aug 24, 2012
    17
    要有智慧的看图表啊, python没有v8快是肯定的, 这个是语言设计的哲学, 另外tornado和nodejs都是玩异步的, erlang是micro thread, 正大光明的比tornado至少要多进程才对
    bhuztez
    bhuztez
    Aug 24, 2012
    18
    @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
    kernel1983
    Aug 24, 2012
    19
    好吧, Erlang确实很快, 10k+让人很吃惊

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

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

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

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

    正在研究消息队列化方案。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5179 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 06:29 · PVG 14:29 · LAX 22:29 · JFK 01:29
    ♥ Do have faith in what you're doing.