V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lvfujun
V2EX  ›  问与答

php Socket 和 websocket 问题.

  •  
  •   lvfujun · 2015-05-12 15:33:35 +08:00 · 2472 次点击
    这是一个创建于 3487 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在在做一个项目
    需求如下
    用html5写一个控制界面控制Android 中间有一个Server端用来转发数据 Android端收到控制指令后作出相应的修改并给Server端返回一个 1 OR 0 用来表示是否成功接收到并已经作出相应的修改Server将是否成功转发给HTML5端
    逻辑如下:
    现实场景中有多台Android
    只有一台Server
    多个HTML5写的客户端
    每个HTML5客户端
    可以对应的控制任意一台Android但每次只能选择与一台Android通信
    我的解决方案是:
    HTML5端与服务器建立WebSocket长连接
    Android 与服务器建立 原始Socket长连接
    现在的问题是原始的Socket连接和WebSocket连接步骤不一样啊!


    问题一、所以我是不是得写两个监听程序啊??????


    如果我在服务器端设置两个监听程序
    一个监听原始的Socket端口为9000,另一个监听WebSocket端口为9001
    假如Android先与服务器端建立了长连接服务器把socket_accept保存了起来
    等了一会HTML5的WebSocket也与服务器建立的长连接服务器把socket_accept保存了起来
    问题二、那么HTML5客户端如何获取到已经连接的安卓客户端的信息呢?(服务器应该如何把HTML5客户端发送来的指令数据转发给安卓呢?)
    是不是要用到进程间通信啊?什么消息队列之类的方法来解决?
    求大牛分析一下应该如何解决呢?
    第 1 条附言  ·  2015-05-12 16:04:50 +08:00
    不要沉啊.
    4 条回复    2015-05-15 10:35:07 +08:00
    yxaaa123
        1
    yxaaa123  
       2015-05-12 16:34:38 +08:00
    当然要俩服务了,两个服务之间通信,然后发送到客户端。
    sujin190
        2
    sujin190  
       2015-05-14 15:59:27 +08:00
    socket_accept保存时从客户端先发一个key过来呗,相同key的就作为一对保存起来,之后转发数据就行了啊
    sujin190
        3
    sujin190  
       2015-05-14 15:59:53 +08:00
    顺便说,php干这个是不是有点蛋疼
    lvfujun
        4
    lvfujun  
    OP
       2015-05-15 10:35:07 +08:00
    @sujin190 确实蛋疼多线程简直坑爹到没朋友.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1022 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:58 · PVG 05:58 · LAX 13:58 · JFK 16:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.