server.php
3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
require_once __DIR__ . '/simplewind/vendor/autoload.php';
require_once __DIR__ . '/simplewind/vendor/workerman/workerman/Autoloader.php';
use Workerman\Worker;
use think\Db;
use Workerman\Lib\Timer;
use Workerman\Connection\AsyncTcpConnection;
//创建一个监听端口
$worker = new Worker("websocket://114.215.223.17:5001");
//设置当前Worker实例的名称
$worker->name='panhaowen';
// 启动1个进程对外提供服务
$worker->count = 1;
//tcpdump -Ans 4096 -iany port
//// 进程启动时设置一个定时器,定时向所有客户端连接发送数据
//$worker->onWorkerStart = function($worker)
//{
// // 定时,每10秒一次
// Timer::add(10, function()use($worker)
// {
// // 遍历当前进程所有的客户端连接,发送当前服务器的时间
// foreach($worker->connections as $connection)
// {
// $connection->send(time());
// }
// });
//};
//$worker->onConnect = function($connection)
//{
// echo "new connection from ip " . $connection->getRemoteIp() . "\n";
//};
//
//$worker->onClose = function($connection)
//{
// echo $connection->id. "is exit" . "\n";
//};
//$worker->onWorkerStart = function($worker)
//{
// // 将db实例存储在全局变量中(也可以存储在某类的静态成员中)
// global $db;
// $db = new \Workerman\MySQL\Connection('rm-m5eblhc9o3515i25neo.mysql.rds.aliyuncs.com', '3306', 'db136s1ehvo1yn73', 'cxz307311SJK', 'fupai');
//};
// 当客户端发来数据时
$worker->onMessage = function($connection, $data) {
// global $db;
// $data=$db->select('create_time')->from('fp_user')->where("id=1")->query();
echo $data;
$connection->send('I am panhaowen');
};
//$global_uid = 0;
//
//// 当客户端连上来时分配uid,并保存连接,并通知所有客户端
//$worker->onConnect=function ($connection)
//{
// global $global_uid;
// // 为这个连接分配一个uid
// $connection->uid = ++$global_uid;
//};
//
//// 当客户端发送消息过来时,转发给所有人
//$worker->onMessage =function ($connection, $data)
//{
// global $worker;
// foreach($worker->connections as $conn)
// {
// $conn->send("user[{$connection->uid}] said: $data");
// }
//};
//
//// 当客户端断开时,广播给所有客户端
//$worker->onClose =function ($connection)
//{
// global $worker;
// foreach($worker->connections as $conn)
// {
// $conn->send("user[{$connection->uid}] logout");
// }
//};
//$task = new Worker();
//// 进程启动时异步建立一个到www.baidu.com连接对象,并发送数据获取数据
//$task->onWorkerStart = function($task)
//{
// // 不支持直接指定http,但是可以用tcp模拟http协议发送数据
// $connection_to_baidu = new AsyncTcpConnection('tcp://www.baidu.com:80');
// // 当连接建立成功时,发送http请求数据
// $connection_to_baidu->onConnect = function($connection_to_baidu)
// {
// echo "connect success\n";
// $connection_to_baidu->send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: keep-alive\r\n\r\n");
// };
// $connection_to_baidu->onMessage = function($connection_to_baidu, $http_buffer)
// {
// echo $http_buffer;
// };
// $connection_to_baidu->onClose = function($connection_to_baidu)
// {
// echo "connection closed\n";
// };
// $connection_to_baidu->onError = function($connection_to_baidu, $code, $msg)
// {
// echo "Error code:$code msg:$msg\n";
// };
// $connection_to_baidu->connect();
//};
Worker::runAll();