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

    ?> 

  • 相关阅读:
    <数据挖掘导论>读书笔记8FP树
    <数据挖掘导论>读书笔记7 Apriori算法
    c#:Json字符串转成xml对象
    微信公众平台开发
    一维随机变量及其概率分布
    概率的基本概念
    C#调用OCR组件识别图片文字
    增加系统右键菜单
    visual studio内置“iis”组件提取及二次开发
    《JavaScript权威指南》读书笔记——JavaScript核心
  • 原文地址:https://www.cnblogs.com/fx2008/p/2324007.html
Copyright © 2011-2022 走看看