关键词:
一、TcpConnection类 的使用
1、简单的TCP测试
Server.php
<?php
require_once __DIR__.'/Workerman/Autoloader.php';
use Workerman\Worker;
$worker = new Worker('websocket://0.0.0.0:80');// 连接回调
$worker->onConnect = function ($connection){
echo "connection success\n";
};
// 接受发送消息
$worker->onMessage = function ($conn,$data){
$conn->send("Hello World");
};
// 关闭连接
$worker->onClose = function ($connection){
echo "connection close \n";
};
$worker::runAll();
测试结果:
服务端输出:
以下错误表示,里面的连接协议没有修改掉原因。
www@iZ23s8agtagZ:~$ telnet 127.0.0.1 8085
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^[[A^[[A
HTTP/1.1 400 Bad Request
<b>400 Bad Request</b><br>Invalid handshake data for websocket. <br> See <a href="http://wiki.workerman.net/Error1">http://wiki.workerman.net/Error1</a> for detail.Connection closed by foreign host.
2、黑白名单的访问
Server.php
<?php
require_once __DIR__.'/Workerman/Autoloader.php';
use Workerman\Worker;
$worker = new Worker('tcp://0.0.0.0:8085');
// 连接回调
$worker->onConnect = function ($connection){
// IP 白名单验证
if($connection->getRemoteIP() != '127.0.0.1'){
$connection->close("IP Address Forbidden");
}
};
// 接受发送消息
$worker->onMessage = function ($conn,$data){
$conn->send("Hello World");
};
// 关闭连接
$worker->onClose = function ($connection){
echo "connection close \n";
};
$worker::runAll();
开启Workerman服务
正确的访问:
非本地地址访问:
二、AsyncTcpConnection类 的使用
Server.php
<?php
require_once __DIR__.'/Workerman/Autoloader.php';
use Workerman\Worker;
$worker = new Worker('websocket://0.0.0.0:443');
// Workerman 启动的回调,这里传递的是Worker对象
$worker->onWorkerStart = function ($worker){
echo "onWorkerStart success";
};
// 连接回调
$worker->onConnect = function ($connection){
$connection_baidu = new \Workerman\Connection\AsyncTcpConnection('tcp://www.baidu.com:443');
// 百度的数据发送给浏览器。返回数据后,使用的数据要use 进来,
$connection_baidu->onMessage = function ($connection_baidu,$data) use ($connection){
$connection->send($data);
};
// 浏览器接受的数据发送给百度
$connection->onMessage = function ($connection,$data) use ($connection_baidu){
$connection_baidu->send($data);
};
$connection_baidu->connect();
};
// 接受发送消息
$worker->onMessage = function ($conn,$data){
$conn->send("Hello World");
};
// 关闭连接
$worker->onClose = function ($connection){
echo "connection close \n";
};
//Workerman 停止回调
$worker->onWorkerStop = function ($worker){
echo "onWorkerStop success";
};
$worker::runAll();
workerman入门学习之gatewayworker框架使用
GatewayWorker是基于Workerman开发的一个可分布式部署的TCP长连接框架,专门用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等文档地址:http://www.workerman.net/gatewaydoc/一、测试官方DEM... 查看详情
kubernetes学习之入门篇
本篇内容是在公司做技术分享时的PPT,主要内容:Kubernetes&Docker简介容器技术基础知识介绍Kubernetes核心设计浅析详细内容请看PPT:https://download.csdn.net/download/u010657094/13078830或者:https://github.com/ByrsH/doc/blo 查看详情
ssh框架入门学习之二(spring)
Spring也是一个开源框架,我在学习Spring的时候,认为最重要的几点是:IOC(控制反转)、AOP(面向切面)和容器概念。详细的教程还请大家去看网上的视频,这里贴一个小Demo以供学习。(前提是大家把该导入的jar包都导入了)1... 查看详情
kubernetes学习之入门篇
本篇内容是在公司做技术分享时的PPT,主要内容:Kubernetes&Docker简介容器技术基础知识介绍Kubernetes核心设计浅析详细内容请看PPT:https://download.csdn.net/download/u010657094/13078830或者:https://github.com/ByrsH/doc/blob/main/Kub... 查看详情
麦子深度学习之-机器学习算法高级进阶
...之-机器学习算法高级进阶随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来... 查看详情
reactnative学习之html基础
前言: ReactNative开发作为一种新型的移动开发方式,个人觉得App的一部分需求会逐步替换成这种方式,也是公司移动开发人员所必须掌握的一种开发技术,所以鉴于这种情况我觉得很有必要学习一下,特此开贴记录... 查看详情
从零入门机器学习之基础概念讲解:深入浅出讲解计算机基本概念
...法行业就业。希望和大家一起成长进步。 本文是从零入门机器学习的第二篇文章,主要内容是讲解计算机基本概念,之所以要讲解上述内容,主要是由于在后续学习和工作中都会用到以上概念,所以必须提前进行学习。希望... 查看详情
从零入门机器学习之基础概念讲解:深入浅出讲解计算机基本概念
...法行业就业。希望和大家一起成长进步。 本文是从零入门机器学习的第二篇文章,主要内容是讲解计算机基本概念,之所以要讲解上述内容,主要是由于在后续学习和工作中都会用到以上概念,所以必须提前进行学习。希望... 查看详情
python基础下的web前端学习之html
一、参考书籍:《Web前端开发HTML5+CSS3+jQuery+AJAX从学到用完美实践》备注:本书为工具书。二、HTML5元素:按功能划分:基础、格式、表单、框架、图像、音频/视频、链接、列表、表格、样式/节、元信息、编程。(参考P76)元素... 查看详情
elasticsearch学习之入门
1.什么是Elasticsearch Elasticsearch是一个基于ApcheLucene的开源实时分布式搜索和分析引擎。2.安装 安装Elasticsearch的唯一要求是安装官方新版的java,地址:www.java.com 在elasticsearch.org/download下载最新版本的Elasticsearch。3.运行 ... 查看详情
bigger-mai养成计划,前端基础学习之html
HTML 1、一套规则,浏览器认识的规则。 2、开发者: 学习Html规则 开发后台程序: 写Html文件(充当模板的作用)@@@@ 数据库获取数据,然后替换到html文件的指定位置(web框架)... 查看详情
scala学习之scala快速入门(代码片段)
文章目录Scala的“味道”Overview概述Hello,worldTheScalaREPLTwotypesofvariablesDeclaringvariabletypesControlstructuresif/elsematchexpressionstry/catchforloopsandexpressionswhileanddo/whileClassesScalamethodsTraits 查看详情
elasticsearch学习之入门2
关于Elasticsearch的几个概念: 1)在Elasticsearch中,文档归属于类型type,而类型归属于索引index,为了方便理解,可以把它们与传统关系型数据库做类比: RelationalDB->DataBases->Tables->Rows->Columns Elasticsearch->Indices-&g... 查看详情
java学习之位运算(操作)总结
...他Java系列文章:Java学习之编译、反编译以及字节码入门Java学习之StringJava学习之JDK9新特性位操作,简单确强大,有一两拨千金奇效;可是平时工作中用得真心不多,故此文章也有备份回顾之意。在计... 查看详情
vue.js学习之入门实例
...直看过vue.js官网api,但是很少实践,这里抽出时间谢了个入门级的demo,记录下一些知识点,防止后续踩坑,牵扯到的的知识点:vue、vue-cli、vue-router、webpack等。首先看下实现的效果: 源码下载戳这里:源码1、使用vue-cli脚手... 查看详情
git基础再学习之:gitcheckout--file
首先明白一下基本概念和用法,这段话是从前在看廖雪峰的git教程的时候摘到OneNote的 准备工作:新建了一个learngit文件夹,在bash中cd进入文件夹,用以下命令创建一个仓库。$gitinit添加一个文本文件one.txt,里面写个内容"one"... 查看详情
分享《深度学习之tensorflow:入门原理与进阶实战》pdf+源代码
下载:https://pan.baidu.com/s/1IAfr-tigqGE_njrfSATT_w《深度学习之TensorFlow:入门、原理与进阶实战》,李金洪著。中文PDF,939页,带书签目录,文字可以复制粘贴。配套源代码。如图: 查看详情
lucene学习之入门
今天开始接触Lucene搜索,Lucene是一个全文检索的框架,主要适用于搜索,这里的搜索不同于数据库的查询。Lucene是建立索引然后存在你设置的路径或者内存中,然后当你输入条件的时候就会去索引文件检索查询。Lucene能... 查看详情