一、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
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^[[A^[[A
HTTP/1.1 Bad Request <b> 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();

最新文章

  1. js/jquery的应用
  2. Android驱动开发前的准备(一)
  3. Jquery一般操作归纳
  4. 30行代码实现Javascript中的MVC
  5. BZOJ3171 Tjoi2013 循环格
  6. CRM客户关系管理系统修改(十四)
  7. Win7下安装双系统Centos,并修复Centos引导加载程序安装在U盘上的问题
  8. 关于Schema设计规范及SQL使用建议
  9. DEDECMS如何修改数据库密码以及忘记了后台密码怎么办
  10. UVA 113 Power of Cryptography (数学)
  11. WAF安恒
  12. 从Clarifai的估值聊聊深度学习
  13. C++ Socket UDP &quot;Hello World!&quot;
  14. mysql select 语法
  15. 树莓派学习路程No.1 树莓派系统安装与登录 更换软件源 配置wifi
  16. 3g自己主动更新网卡驱动web完架构文档
  17. scrapy设置&quot;请求池&quot;
  18. K均值聚类的失效性分析
  19. BZOJ_3514_Codechef MARCH14 GERALD07加强版_主席树+LCT
  20. linux的cron

热门文章

  1. Angular $location获取端口号
  2. .NET中的许可证机制--License
  3. Guava的RateLimiter在单机限流中的正确用法
  4. fopen
  5. Conjugate Function
  6. 分数模板(C++模板)
  7. 自学Python3.5-字符串格式化 作用域 递归
  8. Android GPS定位测试(附效果图)
  9. 洛谷 P2292 [HNOI2004] L语言 解题报告
  10. centos6.5下修改文件夹权限和用户名用户组