V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
barbery
V2EX  ›  分享创造

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

  •  
  •   barbery ·
    barbery · 2014-08-09 16:05:56 +08:00 · 4128 次点击
    这是一个创建于 3794 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这个想法是源自于,某某公司一台机器用go写的可以抗30W长连接。。。

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

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