swoole websocket和TCPsocket的交互

<?php
  /**
  * Created by PhpStorm.
  * User: lancelot
  * Date: 16-7-30
  * Time: 下午8:13
  */
  class Server
  {
  private $serv;
   
  /**
  * @var PDO
  */
  private $pdo;
   
  public function __construct()
  {
  $this->serv = new swoole_websocket_server("0.0.0.0", 9501);
  $this->serv->set([
  ‘worker_num‘ => 1,
  ‘dispatch_mode‘ => 2,
  ‘daemonize‘ => 0,
  ]);
   
  $this->serv->on(‘message‘, array($this, ‘onMessage‘));
  $this->serv->on(‘Request‘, array($this, ‘onRequest‘));
   
  $port1 = $this->serv->listen("0.0.0.0", 9503, SWOOLE_SOCK_TCP);
  $port1->set(
  [
  ‘open_eof_split‘=> true,//检测自动分包打开(具体干什么的 我不懂)
  ‘package_eof‘ => "\r\n"
  ]
  );
  $port1->on(‘Receive‘, array($this, ‘onTcpReceive‘));
   
  $this->serv->start();
  }
   //显示是哪个客户端发来的数据
  public function onMessage(swoole_websocket_server $_server, $frame)
  {
  foreach($_server->connections as $fd)
  {
  $info = $_server->connection_info($fd);
  var_dump($info);
  }
  }
   //服务端接收到不同端口的数据如何处理
  public function onRequest($request, $response)
  {
  foreach($this->serv->connections as $fd)
  {
  $info = $this->serv->connection_info($fd);
  switch($info[‘server_port‘])
  {
  case 9501:
  {
  // websocket
  if($info[‘websocket_status‘])
  {
   
  }
  $response->end("");
  }
   
  case 9503:
  {
  // TCP
  }
  }
   
  var_dump($info);
  }
  }
   
  public function onTcpReceive( swoole_server $serv, $fd, $from_id, $data ) {
  var_dump($data);
  $data_list = explode("\r\n", $data);
  foreach ($data_list as $msg) {
  if( !empty($msg) ) {
  echo "Get Message From Client {$fd}:{$msg}\n";
  }
   
  }
  }
   
   
  }
   
  new Server();
时间: 2024-08-26 02:02:51

swoole websocket和TCPsocket的交互的相关文章

使用swoole websocket 实现执行console php文件 把输出返回给浏览器

1 swoole websocket 服务端 2 <?php 3 $server = new swoole_websocket_server("0.0.0.0", 9501); 4 5 $server->on('open', function (swoole_websocket_server $server, $request) { 6 echo "server: handshake success with fd{$request->fd}\n"

swoole webSocket 聊天室示例

swoole1.7.9增加了内置的WebSocket服务器支持,通过几行PHP代码就可以写出一个异步非阻塞多进程的WebSocket服务器. 基于swoole websocket的用户上下线通知,在线用户列表,群聊等简易功能的聊天室: 源码前往github : https://github.com/wanggang826/about_swoole/websocket_chat 简易聊天室示例地址:  http://sw.wanggangg.top/websocket_chat 原文地址:http

php只能做网站?基于swoole+websocket开发双向通信应用

前言 众所周知,PHP用于开发基于HTTP协议的网站应用非常便捷.而HTTP协议是一种单向的通信协议,只能接收客户端的请求,然后响应请求,不能主动向客户端推送信息.因此,一些实时性要求比较高的应用,如实时聊天.直播应用.在线网页游戏等,就不适合采用HTTP协议.即使采用客户端主动轮询的方式来间接实现双向通信,也会较大地增加服务器的负担,增大代码的复杂性,不利于维护. 那么,是否PHP就无法用来开发双向通信的应用呢? 答案是否定的.PHP内置socket通信支持,可以与linux程序基于socke

PHP swoole websocket协议上机指南

这一上机实验的开发环境用的是jetbrain公司的phpstorm 上级步骤如下: 创建websocket服务端 <?php $server = new swoole_websocket_server('127.0.0.1',9502); function onopen($serv,$request) { echo "成功开启,已经为标示符".$request->fd."打开连接\n"; } $server->on('open','onopen')

swoole webSocket server or client example

server: $ws = new swoole_websocket_server('0.0.0.0', 9502); $ws->on('open', function ($ws, $request) {    var_dump($request->fd, $request->get, $request->server);    $ws->push($request->fd, "hello world\n");}); $ws->on('mess

swoole 安装 搭建tcp服务器和websocket

1.安装swoolewget https://github.com/swoole/swoole-src/archive/v1.9.1-stable.tar.gztar zxvf v1.9.1-stable.tar.gzcd swoole-src-1.9.1-stable/usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmakemake install2.配置php支持swoole

swoole+Redis实现实时数据推送

<?php /** * *************************************** * 单进程保护 * * *************************************** */ $phpSelf = realpath($_SERVER['PHP_SELF']); $lockFile = $phpSelf.'.lock'; $lockFileHandle = fopen($lockFile, "w"); if ($lockFileHandle =

Swoole入门到实战打造高性能赛事直播平台

韩天峰力荐 Swoole入门到实战打造高性能赛事直播平台 第1章 课程介绍 欢迎大家来到swoole的课程!本章主要是介绍了swoole的一些特性,以及使用场景,并且分享了swoole在其他公司的一些案例,最后重点讲解了swoole学习的一些准备工作. 第2章 PHP 7 源码安装 很多工作好几年的PHPer对源码编译安装并不是很了解,其实这种情况是非常可怕的.本章我会教大家如何通过源码安装PHP7,并且简化PHP执行命令.最后重点讲解了源码安装踩到的坑,让您在源码编译安装过程中少走很多弯路.

基于Websocket+SpringMVC4推送部标Jt808终端报警(转)

原文地址:http://www.jt808.com/?p=1263 在开发部标监控平台的时候,我们要及时的将部标终端报警推送到web界面上,以弹窗的形式提供给用户显示,要将报警显示在界面上,部标808协议文档中规定的报警类型,如下图所示: 表 18     报警标准位定义 位 定义 处理说明 0 1:紧急报警,触动报警开关后触发 收到应答后清零 1 1:超速报警 标志维持至报警条件解除 2 1: 疲劳驾驶 标志维持至报警条件解除 3 1:预警 收到应答后清零 4 1:GNSS模块发生故障 标志维