Вот полный код:
index.php (файл для запуска) (+/-)
#!/usr/bin/php
<?php
if (empty($argv[1]) || !in_array($argv[1], array('start', 'stop', 'restart'))) {
die("Не указан параметр запуска(start|stop|restart)\r\n");
}
require('WebSocketServer.php');
require('WebSocketHandler.php');
$server = new WebSocketServer($config);
call_user_func(array($server, $argv[1]));
?>WebSocketServer.php (+/-)
WebSocketHandler.php (+/-)
<?php
class WebSocketHandler extends WebSocketServer {
// Обработка нового соединения
protected function onOpen($client, $info) {
}
// Обработка закрытия соединения
protected function onClose($client) {
}
// Обработа сообщений от клиента
protected function onMessage($client, $data) {
$data = $this->decode($data);
if (!$data['payload']) {
return;
}
if (!mb_check_encoding($data['payload'], 'utf-8')) {
return;
}
//var_export($data);
//шлем всем сообщение, о том, что пишет один из клиентов
$message = 'пользователь #' . intval($client) . ' (' . $this->pid . '): ' . strip_tags($data['payload']);
$this->send($message);
$this->sendHelper($message);
}
// Обработка сообщений от мастера
protected function onSend($data) {
$this->sendHelper($data);
}
// Отправка сообщения на мастер для разсылки воркерам
protected function send($message) {
@fwrite($this->master, $message);
}
private function sendHelper($data) {
$data = $this->encode($data);
$write = $this->clients;
if (stream_select($read, $write, $except, 0)) {
foreach ($write as $client) {
@fwrite($client, $data);
}
}
}
}
$config = array(
'socket' => 'tcp://127.0.0.1:8000',
'pid' => '/var/run/WebSocketServer.pid',
'workers' => 2,
);
?>Запускаю так: ./index.php start &
Может кто чтонить хоть предположить?