websocket
服务的话new Worker
两次,监听不同端口,使用 Worker::runAll()
命令即可windows
中无法在一个文件中同时监听两个 websocket
服务,其他系统比如 Linux
是没有问题的multi workers init in one php file are not support
错误,意思 windows
中禁止在同一个文件中开启多个 websocket
服务<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$http_worker = new Worker("http://0.0.0.0:1234");
$http_worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send('hello http');
};
$ws_worker = new Worker('websocket://0.0.0.0:2345');
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send('hello websocket');
};
// 运行所有Worker实例
Worker::runAll();
windows
版本的 workerman
不支持在同一个文件中实例化多个 Worker
。因此 `windows` 版本的 `workerman` 需要将多个 `Worker` 实例初始化放在不同的文件中才可以解决
start_http.php
,另一个是 start_websocket.php
,在文件中分别加入以下代码,监听不同端口,然后使用 php 文件名
命令启动这两个文件即可<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// 需要监听不同的端口
$ws_worker = new Worker('websocket://0.0.0.0:xxxx');
$ws_worker->onMessage = function(TcpConnection $connection, $data)
{
$connection->send('hello websocket');
};
// 运行所有Worker实例(这里只有一个实例)
Worker::runAll();
websocket
实例,但是你会发现有几个文件,就会有几个运行窗口init.bat
文件,然后在文件中加入以下代码,然后双击运行即可实现在同一个窗口中启动多个服务%切换到项目根目录%
cd /d E:\xxxxxx
%启动第一个服务%
start /b php start_http.php
%启动第二个服务%
start /b php start_websocket.php
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。