V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
barbery
8.39D
0.39D

闲得蛋痛,用 go+websocket 写了个聊天组件。。。

  •  
  •   barbery ·
    barbery · Aug 9, 2014 · 4920 views
    This topic created in 4285 days ago, the information mentioned may be changed or developed.
    这个想法是源自于,某某公司一台机器用go写的可以抗30W长连接。。。

    性能是程序猿的G点,我信了。。。
    边学习,边折腾。。。花了1周,终于搞掂。。。把服务挂在digitalocean上,不知道5刀的机器可以抗多少连接。。

    引入组件的话, 请看gist: https://gist.github.com/Barbery/8f36d999193da2a29ab3
    7 replies    2014-08-10 21:43:41 +08:00
    huangyan9188
        1
    huangyan9188  
       Aug 9, 2014   ❤️ 1
    ws 实现聊天非常简单但是其实并不适合做im 因为长连接的非常不好
    使用http的方法或者udp 来实现是最理想的~~
    我以前也用socket.io写过效率一般,使用http post 或者udp 的方法效率最高,根本不用担心并发性
    其实长连接的话大部分网络带宽都是heartbeat
    barbery
        2
    barbery  
    OP
       Aug 9, 2014
    @huangyan9188 谢谢你的经验之谈,不过http post的话,怎么推送消息到客户端?是轮询么?
    mengskysama
        3
    mengskysama  
       Aug 9, 2014 via Android   ❤️ 1
    @huangyan9188 有点误人子弟啊,post不可能效率高,光头部就比websocket大几倍到十几。而且客户端不断轮询,后台招架不住的。udp在web里没有原生支持。
    skybr
        4
    skybr  
       Aug 9, 2014   ❤️ 1
    @huangyan9188 socket.io只是把websocket做为backends之一, 实质上已经封好了一堆心跳超时、protocol && event的基础业务和rooms && broadcast高级业务进去了, 单单和纯websocket比就已经够重型了.
    jedihy
        5
    jedihy  
       Aug 10, 2014
    @barbery post长轮训
    barbery
        6
    barbery  
    OP
       Aug 10, 2014
    @jedihy 我觉得,不考虑兼容性的话,轮询《comet《socket
    jedihy
        7
    jedihy  
       Aug 10, 2014 via iPhone
    @barbery 确实,长轮训是无奈之举
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   865 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 23:00 · PVG 07:00 · LAX 16:00 · JFK 19:00
    ♥ Do have faith in what you're doing.