用 php 监听 WebSocket

Posted

技术标签:

【中文标题】用 php 监听 WebSocket【英文标题】:Listen WebSocket with php 【发布时间】:2021-07-03 00:47:47 【问题描述】:

我想在 Websocket 的帮助下获得 Binance 上的即时加密货币价格。我可以使用 javascript 执行此操作,如下所示。但是,这对我没有用,因为 javascript 在客户端工作。我想用 php 在服务器上运行。我在研究中找到了一些示例,但它们不是我的解决方案。

下面是一个 javascript 示例,我想学习如何在 php 中进行操作。

var socket = new WebSocket("wss://stream.binance.com:9443/ws/btcusdt@ticker");

socket.onmessage = function (event) 
    var data = JSON.parse(event.data);
    console.log(data);

【问题讨论】:

您能否发布您尝试过的内容,以便我们不再花时间在上面?还有什么版本的PHP? 见Ratchet 【参考方案1】:

我有两个类可以用来从 php 连接到 websocket 服务器

来源在https://github.com/napengam/phpWebSocketServer/tree/master/phpClient

<?php

include __DIR__ . "/../phpClient/websocketCore.php";

class websocketPie extends websocketCore 

    public $uuid, $connected = false, $chunkSize = 6 * 1024;

    //private $socketMaster;

    function __construct($Address, $Port = '', $app = '/', $uu = '') 

        if (parent::__construct($Address, $Port, $app, $uu) == false) 
            return;
        
       
        $respo = $this->readSocket();
        echo var_dump(json_decode($respo));
    



$x = new websocketPie("wss://stream.binance.com","9443","/ws/btcusdt@ticker");

上面脚本的输出如下:

F:\xampp-htdocs\phpWebSocketServer\websocketExtern\websocketPie_1.php:18:
object(stdClass)[2]
  public 'e' => string '24hrTicker' (length=10)
  public 'E' => int 1626263895576
  public 's' => string 'BTCUSDT' (length=7)
  public 'p' => string '-623.48000000' (length=13)
  public 'P' => string '-1.885' (length=6)
  public 'w' => string '32342.75143871' (length=14)
  public 'x' => string '33074.69000000' (length=14)
  public 'c' => string '32451.21000000' (length=14)
  public 'Q' => string '0.00356600' (length=10)
  public 'b' => string '32451.21000000' (length=14)
  public 'B' => string '0.00534800' (length=10)
  public 'a' => string '32451.22000000' (length=14)
  public 'A' => string '0.40745100' (length=10)
  public 'o' => string '33074.69000000' (length=14)
  public 'h' => string '33078.98000000' (length=14)
  public 'l' => string '31550.00000000' (length=14)
  public 'v' => string '51376.85373100' (length=14)
  public 'q' => string '1661668809.92454695' (length=19)
  public 'O' => int 1626177495575
  public 'C' => int 1626263895575
  public 'F' => int 954365122
  public 'L' => int 955537825
  public 'n' => int 1172704

【讨论】:

以上是关于用 php 监听 WebSocket的主要内容,如果未能解决你的问题,请参考以下文章

php 监听activemq 消息队列,需要把监听程序的php文件一直打开么?

mfc 关闭阻塞的socket监听线程 select怎么用

nginx 监听80 为啥php-fpm监听9000

Linux系统中设置多版本PHP共存配合Nginx服务器使用

windows下,python文件监控,python监听文件修改,php文件监控,php监听文件修改

PHP程序连接数据库提示由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。