Skip to content
A Simple WebSocket Console Server.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitattributes
.gitignore
README.md
composer.json
server

README.md

WebSocket Console Server

Latest Stable Version

WebSocket Console Server 是一个简单的WebSocket服务器,它可以在程序和浏览器之间传输数据, 程序将约定格式的数据发送给服务器,再由服务器转发给所有已连接的浏览器客户端 , 实现程序数据、日志等信息的实时、集中化展示。

使用Composer安装

composer create-project joy2fun/websocket-console-server myserver
# 进入目录
cd myserver
# 启动服务
./server
# Windows环境可以使用PHP完整路径来运行,例如 E:\php\php.exe server

到此,一个WebSocket服务器就搭建完成了,默认地址为:ws://你的IP:9028

接下来可以访问Web客户端进行连接,接收消息。

最后,使用PHP客户端推送消息到Web客户端展示。

PHP客户端

WebSocket Console Client 是一个封装好的PHP客户端,可以方便的发送数据到服务器。

更多命令行选项

参数 类型 默认值 说明
-d 或 --daemon 以守护进程方式运行(需要Swoole扩展)
-h 或 --host String 0.0.0.0 绑定的Host/IP,默认任意IP
-p 或 --port Int 9028 监听端口
-s 或 --swoole 强制使用Swoole扩展启动服务
-t 或 --tcp-host String tcp服务绑定的Host/IP(需要Swoole扩展)
--tcp-port Int 9030 tcp服务监听端口

查看完整命令行参数请运行:

./server --help

约定数据格式

使用封装的客户端时并不需要关心数据格式,除非你需要封装自己的客户端,比如写一个JavaScript或者C客户端。

客户端需要发送约定的JSON数据给服务器,示例如下:

{
    "cmd":"publish", /* 固定值,表示推送给客户端 */
    "content": "test data" , /* 推送内容 */
    "time":"", /* 可选,unix时间戳 */
    "client":"", /* 可选,客户端标识,便于过滤 */
    "channel":"" /* 可选,频道,便于客户端过滤展示,默认为空表示推送给所有客户端 */
}

启用TCP服务

为了提高性能,WebSocket 服务端还可以追加监听一个TCP服务端口(需要Swoole扩展),允许客户端使用TCP连接并发送数据:

./server -h 192.168.1.123 -p 9028 -t 192.168.1.123 --tcp-port 9030

TCP方式发送数据格式为:固定包长(4个字节网络字节序)+包体(JSON格式数据),PHP示例如下:

if ($fp = stream_socket_client("tcp://192.168.1.123:9030", $errno, $errstr)) {
    $data = json_encode(array(
        'cmd' => 'publish',
        'content' => 'test',
    ));
    fwrite($fp, pack("N", strlen($data)).$data);
} else {
    echo "$errstr ($errno)<br />\n";
}
You can’t perform that action at this time.