<?php
use
Workerman\Worker;
require_once
'../Workerman/Autoloader.php'
;
$ws_worker
=
new
Worker(
"websocket://0.0.0.0:2345"
);
$ws_worker
->
count
= 4;
$ws_worker
->onWorkerStart =
function
(
$worker
)
{
echo
"Worker starting...\n"
;
};
$ws_worker
->onMessage =
function
(
$connection
,
$data
) {
global
$ws_worker
;
echo
"you just received: $data\n"
;
if
(!isset(
$connection
->uid))
{
$connection
->uid =
$data
;
$ws_worker
->uidConnections[
$connection
->uid] =
$connection
;
return
$connection
->send(
'login success, your uid is '
.
$connection
->uid);
}
list(
$recv_uid
,
$message
) =
explode
(
':'
,
$data
);
if
(
$recv_uid
==
'all'
)
{
broadcast(
$message
);
}
else
{
sendMessageByUid(
$recv_uid
,
$message
);
}
};
function
broadcast(
$message
)
{
global
$ws_worker
;
foreach
(
$ws_worker
->uidConnections
as
$connection
)
{
echo
'1/'
;
$connection
->send(
$message
);
}
}
function
sendMessageByUid(
$uid
,
$message
)
{
global
$ws_worker
;
if
(isset(
$ws_worker
->uidConnections[
$uid
]))
{
$connection
=
$ws_worker
->uidConnections[
$uid
];
$connection
->send(
$message
);
}
}
Worker::runAll();
?>