我有一个服务器正在运行并等待/监听连接。服务器基于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)
有什么想法吗?
1条答案
按热度按时间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,你调用了“套接字”,而你的帖子似乎否定了你对它们的需要。