Я работаю над небольшим проектом с PHP-Websocket.
Сторона сервера работает с этим https://github.com/ghedipunk/PHP-Websockets.
На стороне сервера:
require "PHP-Websockets/websockets.php";
class Server extends WebSocketServer
{
private $_connecting = 'Connecting..';
private $_welcome = 'SOCKET SERVER!';
protected function connected($user)
{
// Send welcome message to user when connected
}
protected function process($user, $message)
{
// data sent from client
$json = json_decode($message);
//prepare data response to client
$response = json_encode(array('type'=>'notify', 'message'=>'Client'.$user->id.' has sent a request.'));
$this->send($user, $response);
}
protected function closed($user)
{
// Alert on server
echo "User $user->id has closed the connection".PHP_EOL;
}
public function __destruct()
{
echo "Server Closed!".PHP_EOL;
}
}
$addr = 'localhost';
$port = '2207';
$server = new Server($addr, $port);
$server->run();
Клиентская сторона:
<script>
var uri = "ws://localhost:2207";
function socket_connect(){
socket = new WebSocket(uri);
if(!socket || socket == undefined) return false;
socket.onopen = function(){
console.log('Connected to Server!');
}
socket.onerror = function(){
console.log('Connection Failed!');
}
socket.onclose = function(){
socket_log('Connection Closed! ')
}
socket.onmessage = function(e){
//var response_data = e.data;
var msg = JSON.parse(e.data); //PHP sends Json data to client
console.log(msg.message);
var new_response = '<li>'+msg.message+'</li>;
$('#response').append(new_response);
}
}
function send_data_to_server(data){
if(!socket || socket == undefined) return false;
socket.send(JSON.stringify(data));
}
$(document).ready(function(){
socket_connect();
$('#send_request').click(function(){
send_data_to_server({message: 'Message sent from Client'});
});
});
</script>
<input type="button" id="send_request" value="Send Request to Server" />
<ul id="responses"></ul>
Все отлично работает с этим кодом выше.
Когда Клиент1 отправляет запрос Серверу, Сервер мгновенно отвечает ему. НО другие клиенты не могут видеть ответное сообщение.
Итак, я хочу пойти дальше: когда клиент отправляет запрос на сервер, сервер отвечает ВСЕМ клиентам, чтобы все клиенты могли видеть сообщение.
Как я могу это сделать?
Заранее спасибо && извините за мой плохой английский!
WebSocketServer::$users
проходимая переменная, которая вы можетеforeach
. - person Passerby   schedule 04.03.2014