java建立tcp服务器长连接_B/S 架构下后端能否建立 TCP 长连接?

这种架构下,这样的优化策略能实现吗?能有作用吗?

php 服务端请求 ES tcp server 部分代码

$streamClient = stream_socket_client("tcp://{$tcpHost}:{$tcpPort}", $errno, $errstr);

// 该数组是所有业务线的分类结构,及每条业务线要搜索的关键字,单个元素对应一条业务线

$categoriesFilter = [];

foreach ($categoriesFilter as $categoryFilter) {

fwrite($streamClient, json_encode($categoryFilter);

}

然后我就不知道该如何实现写的同时接收数据了。并保证每条业务线的数据都发送了,也收到响应了。

ES tcp server 部分代码

$searchServer = new \swoole_server('0.0.0.0', 9501);

$searchServer->on('connect', function (\Swoole\Server $server, $fd) {

dump($server->connection_info($fd));

});

$searchServer->on('receive', function (\Swoole\Server $server, $fd, $reactor_id, $request) {

global $keyword;

global $elastic;

$requestArray = json_decode($request, true);

$keyword = $requestArray;

// es 搜索代码

$result = $elastic->indexFilterAndSearch($requestArray);

$server->send($fd, json_encode($result));

});

$searchServer->on('WorkerStart', function (\Swoole\Server $server, $work_id) {

global $elastic;

$elastic = new ElasticSearch;

});

$searchServer->on('close', function (\Swoole\Server $server, $fd, $reactorId) {

global $keyword;

$clientConnectionInfo = $server->connection_info($fd);

file_put_contents('swoole_log.log', json_encode([

'connectionTime' => date('Y-m-d H:i:s', $clientConnectionInfo['connect_time']),

'closeTime' => date('Y-m-d H:i:s'),

'keyword' => $keyword,

'ip' => $clientConnectionInfo['remote_ip']

]) . PHP_EOL, FILE_APPEND);

});

$searchServer->start();

求各位大佬指点一下,这样优化行不行?如果行的话,我上面的两个问题该从那方面,那里入手解决啊。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值