Swoole学习(五)Swoole之简单WebSocket服务器的创建
环境:Centos6.4,PHP环境:PHP7
服务端代码
- <?php
- //创建websocket服务器
- $host = '0.0.0.0';
- $port = ;
- $ws = new swoole_websocket_server($host, $port);
- //
- $ws->on('open', function($ws, $request){ //$ws就是我们的服务器,$request就是客户端的信息
- var_dump($request);
- $ws->push($request->fd,"welcome \n");
- });
- $ws->on('message', function($ws, $request){
- echo 'Message:'. $request->data;
- $ws->push($request->fd,'get it message');
- });
- $ws->on('close', function($ws, $request){
- echo 'close';
- });
- $ws->start();
客户端代码
- <!DOCTYPE html>
- <html>
- <head>
- <title>WebSecket</title>
- </head>
- <body>
- <Script>
- var wsServer = 'ws://192.168.9.155:9501';
- var websocket = new WebSocket(wsServer);
- websocket.onopen = function (evt) {
- console.log("链接成功");
- };
- websocket.onclose = function (evt) {
- console.log("关闭链接");
- };
- websocket.onmessage = function (evt) {
- console.log('Retrieved data from server: ' + evt.data);
- };
- websocket.onerror = function (evt, e) {
- console.log('Error occured: ' + evt.data);
- };
- </Script>
- </body>
- </html>
文件分别是index4.php、index4.html,。
出现此状态,没有报错,说明开启成功了。
- # ps -ajft //查看进程状态
开始测试
浏览器访问index4.html
- closeobject(Swoole\Http\Request)# () {
- ["fd"]=>
- int()
- ["header"]=>
- array() {
- ["host"]=>
- string() "192.168.9.155:9501"
- ["connection"]=>
- string() "Upgrade"
- ["pragma"]=>
- string() "no-cache"
- ["cache-control"]=>
- string() "no-cache"
- ["upgrade"]=>
- string() "websocket"
- ["origin"]=>
- string() "http://myec.com"
- ["sec-websocket-version"]=>
- string() ""
- ["user-agent"]=>
- string() "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4882.400 QQBrowser/9.7.13059.400"
- ["accept-encoding"]=>
- string() "gzip, deflate, sdch"
- ["accept-language"]=>
- string() "zh-CN,zh;q=0.8"
- ["sec-websocket-key"]=>
- string() "/nsMgwOyqsM5xmgdqpEBRA=="
- ["sec-websocket-extensions"]=>
- string() "permessage-deflate; client_max_window_bits"
- }
- ["server"]=>
- array() {
- ["request_method"]=>
- string() "GET"
- ["request_uri"]=>
- string() "/"
- ["path_info"]=>
- string() "/"
- ["request_time"]=>
- int()
- ["request_time_float"]=>
- float(1522731778.6278)
- ["server_port"]=>
- int()
- ["remote_port"]=>
- int()
- ["remote_addr"]=>
- string() "192.168.9.1"
- ["master_time"]=>
- int()
- ["server_protocol"]=>
- string() "HTTP/1.1"
- ["server_software"]=>
- string() "swoole-http-server"
- }
- ["request"]=>
- NULL
- ["cookie"]=>
- NULL
- ["get"]=>
- NULL
- ["files"]=>
- NULL
- ["post"]=>
- NULL
- ["tmpfiles"]=>
- NULL
- }
OK~
Swoole学习(五)Swoole之简单WebSocket服务器的创建的更多相关文章
- Swoole学习(四)Swoole之简单WEB服务器的创建
环境:Centos6.4,PHP环境:PHP7 <?php //创建WEB服务器 $host = '0.0.0.0'; $port = ; $server = new swoole_http_s ...
- Swoole学习(七)Swoole之异步TCP服务器的创建
环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如 ...
- Swoole学习(三)Swoole之UDP服务器的创建
环境:Centos6.4,PHP环境:PHP7 <?php //创建UCP服务器(UDP服务器相对于TCP服务器通信更可靠些) /** * $host 是swoole需要监听的ip,如果要监听本 ...
- Swoole学习(二)Swoole之TCP服务器的创建
环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如 ...
- Netty实现简单WebSocket服务器
本文参考<Netty权威指南>├── WebSocketServerHandler.java├── WebSocketServer.java└── wsclient.html packag ...
- Swoole学习(六)Swoole之定时器的创建与清除
环境:Centos6.4,PHP环境:PHP7,Swoole2.1(在指定的时间后执行函数,需要1.7.7或更高版本) <?php //----------------------------- ...
- 04.swoole学习笔记--webSocket服务器
<?php //创建webSocket服务器 $serv=); //获取请求 //on //open 建立连接 $serv:服务器 $request:客户端信息 $serv->on('op ...
- swoole创建websocket服务器
目录 1 安装准备 1.1 安装swoole前必须保证系统已经安装了下列软件 1.2 下载并解压 1.3 编译安装成功后,修改php.ini 2 构建Swoole基本实例 2.1 tcp服务器实例 2 ...
- 01.swoole学习笔记--TCP服务器
1.安装swoole扩展 2.网络调试助手进行调试 <?php //创建服务器 $host='192.168.10.31'; $port=; //$model='SWOOLE_PROCESS'; ...
随机推荐
- ORA-01078错误解决办法
ORA-01078: failure in processing system parameters & LRM-00109: could not open parameter file 安装 ...
- 【POJ2516】Minimum Cost
[POJ2516]Minimum Cost 题意:有N个收购商.M个供应商.K种物品.对于每种物品,每个供应商的供应量和每个收购商的需求量已知.每个供应商与每个收购商之间运送该物品的运费已知.求满足收 ...
- eclipse控制台不限制显示的行数
在Preferences中搜索Console,设置Limit console output没有限制即可.
- 170313、poi:采用自定义注解的方式导入、导出excel(这种方式比较好扩展)
步骤一.自定义注解 步骤二.写Excel泛型工具类 步骤三.在需要导出excel的类属相上加上自定义注解,并设置 步骤四.写service,controller 步骤一:自定义注解 import ja ...
- UNION DISTINCT
w同结构表读写合并. DROP PROCEDURE IF EXISTS w_ww_amzasin; DELIMITER /w/ CREATE PROCEDURE w_ww_amzasin() BEGI ...
- linux下安装JDK,及配置环境变量
首先去官网https://www.oracle.com/technetwork/java/javase/downloads/index.html下载最新的JDK版本: 以下操作在root用户下操作 第 ...
- VC++SDK编程——模拟时钟
#include <Windows.h> #include <tchar.h> #include <math.h> typedef struct Time { in ...
- 12.Project Fields to Return from Query-官方文档摘录
1 插入例句 db.inventory.insertMany( [ { item: "journal", status: "A", size: { h: 14, ...
- 我不想用for循环
为什么要挑战自己在代码里不写for loop?因为这样可以迫使你去使用比较高级.地道的语法或库.文中以python为例子,讲了不少大家其实在别人的代码里都见过.但自己很少用的语法. 这是一个挑战.我要 ...
- bios设置启动方式问题
uefi和legacy是两种不同的引导方式,uefi是新式的BIOS,legacy是传统BIOS.你在UEFI模式下安装的系统,只能用UEFI模式引导:同理,如果你是在Legacy模式下安装的系统,也 ...