想写一个网页聊天程序,需要哪些知识? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
vJianZhen
V2EX    程序员

想写一个网页聊天程序,需要哪些知识?

  •  1
     
  •   vJianZhen 2015-05-12 22:09:53 +08:00 5976 次点击
    这是一个创建于 3887 天前的主题,其中的信息可能已经有所发展或是发生改变。

    相当于弄一个网页版的微信,但是当然功能没那么强大,现在想的就是把它实现了,细节以后再抛光。

    那特别需要哪些网络编程的知识吗?
    有没有一个相对规范的工作流程?

    用Python3 + Django。

    38 条回复    2015-05-16 20:27:57 +08:00
    hellosnow
        1
    hellosnow  
       2015-05-12 22:15:48 +08:00 via Android
    推荐使用websocket
    shuiniushushu
        2
    shuiniushushu  
       2015-05-12 22:19:02 +08:00
    websocket+1
    vJianZhen
        3
    vJianZhen  
    OP
       2015-05-12 22:35:18 +08:00
    @hellosnow
    @shuiniushushu

    这个词我第一次听。。。谢谢你们给的启发。
    刚才搜了一下,好似 微博私信,WebQQ都是用它建立起来的,真的很强大!
    谢谢!
    Axurez
        4
    Axurez  
       2015-05-12 22:55:52 +08:00
    timothyye
        5
    timothyye  
       2015-05-12 23:02:33 +08:00
    nodejs+websocket
    a6377508
        6
    a6377508  
       2015-05-12 23:48:15 +08:00 via Android
    websocket +1,网上很多例子
    senghoo
        7
    senghoo  
       2015-05-13 00:20:47 +08:00 via iPad
    Websocket + tornado . Tornado官方就有个demo
    robinWu
        8
    robinWu  
       2015-05-13 00:23:19 +08:00
    websocket+1
    robinWu
        9
    robinWu  
       2015-05-13 00:23:58 +08:00
    websoket+1
    hellomsg
        10
    hellomsg  
       2015-05-13 00:27:27 +08:00
    websocket(html5)
    或socket.io(没用过)
    或长轮训
    flowfire
        11
    flowfire  
       2015-05-13 06:05:19 +08:00
    websocket +1 ,前两天还在研究呢,总算是测试通过了。。。
    http://bingkubei.tk/?p=76
    这边有php server的源码。。。你可以去看看
    clino
        12
    clino  
       2015-05-13 07:22:35 +08:00 via Android
    这个我记得是 uliweb 版 websocket chatroom 的例子
    clino
        13
    clino  
       2015-05-13 07:23:03 +08:00 via Android
    链接还没附上就发了 https://github.com/limodou/chatroom
    mtmobile
        14
    mtmobile  
       2015-05-13 07:47:54 +08:00 via Android
    环信
    mikumikumoe
        15
    mikumikumoe  
       2015-05-13 07:48:16 +08:00
    @flowfire beikubei 23333
    easynoder
        16
    easynoder  
       2015-05-13 07:54:08 +08:00
    websocket + nodejs,之前做过,开发效率挺高的
    vJianZhen
        17
    vJianZhen  
    OP
       2015-05-13 08:37:07 +08:00
    @senghoo 可我学的是django。。
    vJianZhen
        18
    vJianZhen  
    OP
       2015-05-13 08:39:19 +08:00
    @easynoder 请问有demo页吗?
    vJianZhen
        19
    vJianZhen  
    OP
       2015-05-13 08:43:33 +08:00
    @mtmobile 想自己写
    isayme
        20
    isayme  
       2015-05-13 09:13:33 +08:00
    原理就是楼上提到的WebSocket, NodeJS里的socket.io是用于写服务端的.
    不过不想写服务端的话可以用LeanCloud的服务, 他们有实时通信SDK: https://leancloud.cn/docs/js_realtime.html
    我写的简单的例子: http://onchat.isayme.org/
    单页面, Backbone+RequireJS实现, 源码: https://github.com/isayme/online-chat
    xlrtx
        21
    xlrtx  
       2015-05-13 10:18:58 +08:00
    agar就是用websocket写的
    crabRunning
        22
    crabRunning  
       2015-05-13 10:32:13 +08:00 via Android
    swoole,webIMso easy
    kzzhr
        23
    kzzhr  
       2015-05-13 11:24:25 +08:00 via Android
    安全过滤,这个非常重要。
    不好一个聊天室的人全要完蛋!
    hxtheone
        24
    hxtheone  
       2015-05-13 11:27:29 +08:00
    nodejs + socket.io,这酸爽,谁用谁知道
    vJianZhen
        25
    vJianZhen  
    OP
       2015-05-13 11:34:07 +08:00
    @kzzhr 安全过滤?具体讲讲。
    vJianZhen
        26
    vJianZhen  
    OP
       2015-05-13 11:36:22 +08:00
    @hxtheone 这两样和django+python是协同的关系,还是可替代的解决方案?
    quix
        27
    quix  
       2015-05-13 12:11:39 +08:00
    配置下 rabbitmq 玩玩
    qw7692336
        28
    qw7692336  
       2015-05-13 12:26:04 +08:00
    @vJianZhen webQQ并不是,webQQ是通过轮询实现的
    quix
        29
    quix  
       2015-05-13 12:28:15 +08:00
    有一个 stack 楼主可以看看 http://crossbar.io/
    gamexg
        30
    gamexg  
       2015-05-13 13:01:38 +08:00 via Android
    这两样和django+python是协同的关系,还是可替代的解决方案?

    独立方案,但是可以协同使用。
    hxtheone
        31
    hxtheone  
       2015-05-13 13:10:21 +08:00
    @vJianZhen 算是可替代的解决方案吧,基本上是前后端一手抓了,至于可不可以和python协同开发,我没有过这样的经验,不敢乱说
    gamexg
        32
    gamexg  
       2015-05-13 13:32:44 +08:00
    python 向 socket.io 发消息可以用:

    https://github.com/ziyasal/socket.io-python-emitter
    使用官方的接口,但是需要 redis 。

    https://github.com/invisibleroads/socketIO-client
    socket.io python客户端库 无需 redis ,我记得还可以接受消息。

    socket.io 向 django 发消息:

    https://github.com/danwrong/restler
    REST client library for node.js
    rayyang88
        33
    rayyang88  
       2015-05-13 19:47:58 +08:00
    node + websocket 或者 go + websocket
    vJianZhen
        34
    vJianZhen  
    OP
       2015-05-13 22:05:39 +08:00
    @xlrtx agar是什么?搜了没结果
    vJianZhen
        35
    vJianZhen  
    OP
       2015-05-13 22:06:56 +08:00
    @qw7692336 我看了一个websocket的教程,里面这样写的,我也没去求证
    那微信网页版用的哪个?
    vJianZhen
        36
    vJianZhen  
    OP
       2015-05-13 22:11:30 +08:00
    @quix 乍一看好炫啊!谢谢
    easynoder
        37
    easynoder  
       2015-05-14 20:10:07 +08:00
    @vJianZhen 代码已经留给公司了。。
    xlrtx
        38
    xlrtx  
       2015-05-16 20:27:57 +08:00
    @vJianZhen agar.io 一个网页游戏
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2466 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 07:13 PVG 15:13 LAX 23:13 JFK 02:13
    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