• 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

    ?> 

  • 相关阅读:
    C4.5算法的学习笔记
    jQuery学习笔记(二)jQuery中DOM操作
    jQuery学习笔记(四)jQuery中的动画
    jQuery学习笔记(一)jQuery选择器
    编译JDK源代码,开启Debug信息[转]
    【转】如何debug没有源代码的class文件——eclipse+jad
    【转】JAVA的内省(introspector)与反射(reflection)
    Java中访问修饰符protected的权限 [转]
    [转]我是如何设计并实现一门程序设计语言——一门函数式编程语言Lucida的诞生
    不断重构
  • 原文地址:https://www.cnblogs.com/fx2008/p/2324007.html
Copyright © 2020-2023  润新知