swoole学习(二)----搭建server和client
1.搭建server
1.1搭建server.php
1.搭建websocket服务器,首先建立 server.php 文件,
<?php
$server = new swoole_websocket_server('0.0.0.0', 9502);// 创建swoole的websocket实例 其中 0.0.0.0 代表监听所有回路 包括127.0.0.1 和 192.168.*.* 和 外部IP, 端口是9502 //监听打开事件
$server->on('open', function ($server, $request){
var_dump($request->fd, $request->get, $request->server);
$server->push($request->fd, "我是open\n");
}); //监听消息事件
$server->on('message', function ($server, $message){
echo "Message: {$message->data}\n";
$server->push($message->fd, "服务器给的: {$message->data}");
}); //监听关闭事件
$server->on('close', function ($server, $fd){
echo "客户端: {$fd} 关闭了";
}); $server->start();
$server->push("客户端ID", "推送信息"); 这个方法是server向client推送信息的方法;
server 的 on 事件监听有 open : 连接成功事件
message : 收到信息事件
close : 客户端关闭事件
2.运行server.php文件 php server.php

2.搭建client
2.1 搭建client.html
1.创建client.html,主要使用 js 的 WebSocket()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> </body>
<script>
var wsServer = 'ws://192.168.33.10:9502';
var websocket = new WebSocket(wsServer);
websocket.onopen = function (evt) {
console.log("连接到服务器");
}; websocket.onclose = function (evt) {
console.log("连接关闭");
}; websocket.onmessage = function (evt) {
console.log('收到服务器信息' + evt.data);
}; websocket.onerror = function (evt, e) {
console.log('错误信息: ' + evt.data);
};
</script>
</html>
2.参数说明: var wsServer = 'ws://192.168.33.10:9502';
ws: 代表使用websocket协议
ip地址 是server的地址
3.监听事件 onopen : 客户端连接到服务器的时候触发
onclose : 客户端关闭的时候触发
onmessage : 收到服务器信息的时候触发
onerror : 发生错误的时候触发,包括连接错误,发送、接收信息的时候出现错误触发
3.测试连接
3.1客户端连接

输出正常
3.2服务器连接

输出正常!
4.总结
swoole的 websocket 服务器搭建成功,当客户端请求服务器的时候,客户端执行了onopen事件,触发了console.log,服务器端当client连接的时候,触发了onopen,打印了fd,和客户端请求头信息;
这样就搭建成功了server和client实时双工通信! 可以做一个实时聊天室,或者弹幕系统,以后慢慢学习!
swoole学习(二)----搭建server和client的更多相关文章
- Swoole学习(二)Swoole之TCP服务器的创建
环境:Centos6.4,PHP环境:PHP7 <?php //创建TCP服务器 /** * $host 是swoole需要监听的ip,如果要监听本地,不对外服务,那么就是127.0.0.1;如 ...
- swoole 异步非堵塞 server/端 client/端 代码,已经测试完毕。贴代码
服务器环境 centos7.0 swoole4.3 php7.2 pcre4.8 nginx1.8 php-fpm server.php <?php class Server { pr ...
- swoole深入学习 2. tcp Server和tcp Client
这节来学习Swoole最基础的Server和Client.会通过创建一个tcp Server来讲解. server <?php class Server { private $serv; pub ...
- swoole深入学习 3. upd Server和udp Client
前面主要讲了tcp得server和client的业务处理,tcp有三次握手,有连接的概览,而UDP服务器与TCP服务器不同,UDP没有连接的概念.启动Server后,客户端无需Connect,直接可以 ...
- SpringCloud学习(二):微服务入门实战项目搭建
一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- AspectJ基础学习之二搭建环境(转载)
AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...
- Netty4.0学习笔记系列之一:Server与Client的通讯
http://blog.csdn.net/u013252773/article/details/21046697 本文是学习Netty的第一篇文章,主要对Netty的Server和Client间的通讯 ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...
随机推荐
- Oracle中用户和方案的区别
从定义中我们可以看出方案(Schema)为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一 ...
- C++ virtual inheritance ZZ
虚继承 是面向对象编程中的一种技术,是指一个指定的基类,在继承体系结构中,将其成员数据实例共享给也从这个基类型直接或间接派生的其它类. 举例来说:假如类A和类B各自从类X派生(非虚继承且假设类X ...
- 使用POI解析Excel时,出现org.xml.sax.SAXParseException: duplicate attribute 'o:relid'的解决办法
1.使用org.apache.poi解析excle,.xlsx类型文件InputStream is = new FileInputStream(strFileName);XSSFWorkbook wb ...
- win10系统 WMI Provider Host cpu 占用过高
今天上班,发现系统有点卡,QQ总是没响应. 打开任务管理器,发现有一个程序- WMI Provider Host 占用cpu竟然高达80% 然后通过事件查看器发现是一个pid为9832的程序造成的 然 ...
- QT的hint的toolTip的使用
QString value = ''1213213231"; this->setToolTip(value);//QT自带的接口 value就是自己想要塞进的数据. 如果字符多的话 怎 ...
- python接口自动化4-绕过验证码登录(cookie) (转载)
前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...
- 图解:TCP协议中的三次握手和四次挥手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资 ...
- mysql实现‘主从复制’
mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 首先准备多台服务器,其中一台作为主服务器,从服务器数量自定. 1.主从服务器分别作以下操作: 主服务器 ...
- Oracle sql trace用法
sql_trace是oracle提供的一个非常好的跟踪工具,主要用来检查数据库的异常情况,通过跟踪数据库的活动,找到有问题的语句. 一.概述: SQL_TRACE是Oracle的一个非常强大的工 ...
- 一个较复杂的执行redis的lue脚本