zoukankan      html  css  js  c++  java
  • php websocket

    Description

    WebSocket Server and Client library for PHP. Works with the latest HyBi specifications, as well the older Hixie #76 specification used by older Chrome versions and some Flash fallback solutions.

    This project was started to bring more interactive features to http://www.u2start.com/

    Downloads

    Currently no downloads are available. Source and simple example available in GIT repository (see Source tab).

    Features

    Server

    • Hixie #76 and Hybi #12 protocol versions
    • Flash client support (also serves XML policy file on the same port)
    • Native Firefox, Safari (iPod / iPhone as well), Chrome and IE10 support. With Flash Client every browser supporting Flash works as well (including IE6-9, Opera, Android and other older desktop browsers).
    • Opera (Mobile) supports WebSockets natively but support has been disabled by default. Can be enabled in opera:config.

    Client

    • Hybi / Hixie76 support.

    Known Issues

    • SSL support not well field tested.
    • Lacks ORIGIN checking (can be implemented manually in onConnect using getHeaders(), just disconnect the user when you dont like the Origin header)
    • No support for extension data from the HyBi specs.

    Requirements

    Server

    • PHP 5.3
    • Open port for the server
    • PHP OpenSSL module to run a server over a encrypted connection

    Client

    • PHP 5.3
    • Server that implements the HyBi (#8-#12) draft version
    • PHP OpenSSL module to connect using SSL (wss:// uris)

    Server Example

    #!/php -q
    <?php

    // Run from command prompt > php demo.php
    require_once("websocket.server.php");

    /**
     * This demo resource handler will respond to all messages sent to /echo/ on the socketserver below
     *
     * All this handler does is echoing the responds to the user
     * @author Chris
     *
     */

    class DemoEchoHandler extends WebSocketUriHandler{
            public function onMessage(IWebSocketConnection $user, IWebSocketMessage $msg){
                    $this->say("[ECHO] {$msg->getData()}");
                    // Echo
                    $user->sendMessage($msg);
            }

            public function onAdminMessage(IWebSocketConnection $user, IWebSocketMessage $obj){
                    $this->say("[DEMO] Admin TEST received!");

                    $frame = WebSocketFrame::create(WebSocketOpcode::PongFrame);
                    $user->sendFrame($frame);
            }
    }

    /**
     * Demo socket server. Implements the basic eventlisteners and attaches a resource handler for /echo/ urls.
     *
     *
     * @author Chris
     *
     */

    class DemoSocketServer implements IWebSocketServerObserver{
            protected $debug = true;
            protected $server;

            public function __construct(){
                    $this->server = new WebSocketServer(0, 12345, 'superdupersecretkey');
                    $this->server->addObserver($this);

                    $this->server->addUriHandler("echo", new DemoEchoHandler());
            }

            public function onConnect(IWebSocketConnection $user){
                    $this->say("[DEMO] {$user->getId()} connected");
            }

            public function onMessage(IWebSocketConnection $user, IWebSocketMessage $msg){
                    $this->say("[DEMO] {$user->getId()} says '{$msg->getData()}'");
            }

            public function onDisconnect(IWebSocketConnection $user){
                    $this->say("[DEMO] {$user->getId()} disconnected");
            }

            public function onAdminMessage(IWebSocketConnection $user, IWebSocketMessage $msg){
                    $this->say("[DEMO] Admin Message received!");

                    $frame = WebSocketFrame::create(WebSocketOpcode::PongFrame);
                    $user->sendFrame($frame);
            }

            public function say($msg){
                    echo "$msg \r\n";
            }

            public function run(){
                    $this->server->run();
            }
    }

    // Start server
    $server = new DemoSocketServer(0,12345);
    $server->run();

    Client Example

    The Client is not as interesting as the server and is mainly used to test the server

    <?php
            require_once("websocket.client.php");

            $input = "Hello World!";
            $msg = WebSocketMessage::create($input);

            $client = new WebSocket("ws://127.0.0.1:12345/echo/");
            $client->sendMessage($msg);

            // Wait for an incoming message
            $msg = $client->readMessage();

            $client->close();

            echo $msg->getData(); // Prints "Hello World!" when using the demo.php server

    ?> 

  • 相关阅读:
    Android基础学习之架构图
    Android基础学习之Activity生命周期
    JQuery Mobile入门——设置后退按钮文字(转)
    EditTextPreference点击后输入框显示隐藏内容,类似密码输入(转)
    Brophp框架开发时连接数据库读取UTF8乱码的解决(转)
    使用sessionStorage、localStorage存储数组与对象(转)
    JavaScript初学者应注意的七个细节(转)
    数据库记录转换成json格式 (2011-03-13 19:48:37) (转)
    JQuery Mobile 页面参数传递(转)
    何修改WAMP中mysql默认空密码--转
  • 原文地址:https://www.cnblogs.com/fx2008/p/2324007.html
Copyright © 2011-2022 走看看