V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
90safe
V2EX  ›  程序员

关于 PHP 与 iOS 的 Socket 通讯方式

  •  
  •   90safe · 2018-01-23 14:53:48 +08:00 · 2738 次点击
    这是一个创建于 2526 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前在做一个需求:HD 版的 APP 生成一个二维码,Mobile 版已经登陆过了,扫描二维码,将 Token 传输给 HD 版,然后 HD 相当于扫码登陆成功,即可用 Token 获取用户数据。

    我的思路是 HD 生成二维码的时候与服务器建立连接,Mobile 扫描到二维码以后,也与服务器建立连接,然后将 Token 传输过去,大概是这样。

    那么重点来了,我只是一个 PHP 后端开发,客户端是 iOS/Android 来做,服务器的话,我得咋配置呢?我以前玩 socket 仅限于 nc/lcx,难道得上 Swoole ?

    16 条回复    2018-01-24 08:33:28 +08:00
    sszxcss
        1
    sszxcss  
       2018-01-23 15:01:48 +08:00
    上 swoole,怕啥
    nilai
        2
    nilai  
       2018-01-23 15:05:53 +08:00
    为嘛要用 Socket ? 这功能需求 HTTP 不能实现 ???
    90safe
        3
    90safe  
    OP
       2018-01-23 15:09:45 +08:00
    @nilai HTTP 方式需要在生成二维码以后,无限请求服务器,1-3s 请求一次,才能实现,这样如果多个 APP 同时打开二维码页面,就大并发了呀
    server
        4
    server  
       2018-01-23 16:29:30 +08:00
    轮询不好吗
    ljmready
        5
    ljmready  
       2018-01-23 16:33:37 +08:00
    http 轮询比 websocket 好吧
    ycz0926
        6
    ycz0926  
       2018-01-23 17:07:36 +08:00
    workerman
    jadec0der
        7
    jadec0der  
       2018-01-23 18:25:14 +08:00
    3000 个 App 登录,是建立 3000 个长链接并发大,还是 3 秒钟轮询一次,每秒钟 1000 个 HTTP 请求并发大?
    cevincheung
        8
    cevincheung  
       2018-01-23 18:30:59 +08:00
    为什么觉得 http 请求这个场景不叫并发。
    每次请求耗时多久?有超过 3 秒?(服务端耗时)
    每单位时间(请求耗时)中同时多少请求并存?

    这个量不上百万基本都需要考虑的吧。
    cevincheung
        9
    cevincheung  
       2018-01-23 18:31:35 +08:00
    补:不需要考虑并发负载
    fcten
        10
    fcten  
       2018-01-23 18:31:35 +08:00
    websocket 也行,长轮询也行。并发是必然的,有多少用户在登录就会有多少并发。又想要实时又不要并发哪有这么好的事……
    chinvo
        11
    chinvo  
       2018-01-23 18:55:53 +08:00 via iPhone
    安心用轮询,websocket 和长链接更吃并发。而且这点数据量( token 校验)用 websocket 性价比低。
    coderfox
        12
    coderfox  
       2018-01-23 19:01:22 +08:00 via Android
    为什么不直接把 token 存二维码里?
    coderfox
        13
    coderfox  
       2018-01-23 19:03:50 +08:00 via Android
    对不起,是我理解错了。

    就用轮询呗,长连接消耗不见得小。
    90safe
        14
    90safe  
    OP
       2018-01-23 20:08:56 +08:00
    @cevincheung @chinvo @coderfox @jadec0der @server @ljmready @fcten

    原因是因为这个 /t/424498,mysql 放在 win 系统,所以想减少查询跟写入
    jadec0der
        15
    jadec0der  
       2018-01-23 20:12:50 +08:00
    @90safe 那我建议你引入一个 redis,只需要很小的内存就够用。我认为在 Server 上搞个缓存比在 C/S 之间增加一个协议的成本低多了
    90safe
        16
    90safe  
    OP
       2018-01-24 08:33:28 +08:00
    @jadec0der 谢谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5886 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:19 · PVG 10:19 · LAX 18:19 · JFK 21:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.