正在尝试通过TCP将Laravel应用程序连接到workerman服务器

idfiyjo8  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(189)

我有一个服务器正在运行并等待/监听连接。服务器基于Mark Framework,它使用的是Workerman。到目前为止,我能够启动服务器,当我在浏览器上加载URL/host时,它会显示内容(在本例中,我希望是一个简单的Hello world)。
这是用于启动服务器的index.php

use Mark\App;
require 'vendor/autoload.php';

$api = new App('http://127.0.0.1:8080');
$api->count = 2; // process count

$api->any('/', function ($requst) {
    return 'Hello world';
});    

$api->start();

现在,我有一个简单的Laravel应用程序,当我打开某个页面时,我想连接到该服务器并显示其中的内容。
我不知道该怎么做。目前我在控制器里看到的是

public function index() {

    try {

        $host = "127.0.0.1";
        $port = 8080;
        $resource =  stream_socket_client("tcp://$host:$port", $error_no, $error_str, 20, STREAM_CLIENT_CONNECT);

        $lines = stream_get_line($resource, 8192);
        
        var_dump($lines);

    } catch(Exception $e){
        return response($e->getMessage(), 500);
    }

    var_dump($resource);
    return View::make('index');
}

var_dump($resource)是连接的变量,表示

resource(10) of type (stream)

var_dump($lines);显示false,我猜这是因为$resource没有建立任何连接

bool(false)

有什么想法吗?

whitzsjs

whitzsjs1#

TCP连接不依赖于任何协议,它只是一个纯粹的数据传输协议,使您能够传输字节与ACL确认.您命名为TCP,你包括一些标记框架,这是基于http协议的进程.
文档中说它可以帮助你用php快速编写API。这意味着它不是一个带有自定义协议的TCP原始服务器,而是一个面向http协议的服务器,它只是一个为http GET/POST请求准备好的REST API,让你的生活更轻松。
你可以在两端用laravel做同样的事情,直到你需要实时连接。实时套接字连接是通过javascript进行的,因为HTTP不是为此而构建的。
从拉瑞的身边刚刚读到:https://laravel.com/docs/9.x/http-client#making-requests
我可能忽略了一些东西,但是套接字在网络中很少使用。通过调用TCP,你调用了“套接字”,而你的帖子似乎否定了你对它们的需要。

相关问题