lvfujun
V2EX  ›  问与答

php Socket 和 websocket 问题.

  •  
  •   lvfujun · May 12, 2015 · 2969 views
    This topic created in 4111 days ago, the information mentioned may be changed or developed.
    现在在做一个项目
    需求如下
    用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客户端发送来的指令数据转发给安卓呢?)
    是不是要用到进程间通信啊?什么消息队列之类的方法来解决?
    求大牛分析一下应该如何解决呢?
    Supplement 1  ·  May 12, 2015
    不要沉啊.
    4 replies    2015-05-15 10:35:07 +08:00
    yxaaa123
        1
    yxaaa123  
       May 12, 2015
    当然要俩服务了,两个服务之间通信,然后发送到客户端。
    sujin190
        2
    sujin190  
       May 14, 2015
    socket_accept保存时从客户端先发一个key过来呗,相同key的就作为一对保存起来,之后转发数据就行了啊
    sujin190
        3
    sujin190  
       May 14, 2015
    顺便说,php干这个是不是有点蛋疼
    lvfujun
        4
    lvfujun  
    OP
       May 15, 2015
    @sujin190 确实蛋疼多线程简直坑爹到没朋友.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3742 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:44 · PVG 08:44 · LAX 17:44 · JFK 20:44
    ♥ Do have faith in what you're doing.