phpsocket.io
v2.1.1
Uma implementação alternativa de socket.io no lado do servidor em PHP baseada em Workerman.
Suporta apenas socket.io >= v1.3.0 e <= v2.x
Este projeto é apenas traduzido de socket.io por trabalhador.
Mais API basta ver https://socket.io/docs/v2/server-api/
compositor requer trabalhador/phpsocket.io
iniciar.php
use Workerman Worker ;
use PHPSocketIO SocketIO ;
require_once __DIR__ . ' /vendor/autoload.php ' ;
// Listen port 2021 for socket . io client
$ io = new SocketIO ( 2021 );
$ io -> on ( ' connection ' , function ( $ socket ) use ( $ io ) {
$ socket -> on ( ' chat message ' , function ( $ msg ) use ( $ io ) {
$ io -> emit ( ' chat message ' , $ msg );
});
});
Worker:: runAll ();
https://github.com/walkor/phpsocket.io/blob/master/examples/chat/start_io.php
use Workerman Worker ;
use PHPSocketIO SocketIO ;
require_once __DIR__ . ' /vendor/autoload.php ' ;
// Listen port 2020 for socket . io client
$ io = new SocketIO ( 2020 );
$ io -> on ( ' connection ' , function ( $ socket ) {
$ socket -> addedUser = false ;
// When the client emits ' new message' , this listens and executes
$ socket -> on ( ' new message ' , function ( $ data ) use ( $ socket ) {
// We tell the client to execute ' new message'
$ socket -> broadcast -> emit ( ' new message ' , array (
' username ' => $ socket -> username ,
' message ' => $ data
));
});
// When the client emits ' add user' , this listens and executes
$ socket -> on ( ' add user ' , function ( $ username ) use ( $ socket ) {
global $ usernames , $ numUsers ;
// We store the username in the socket session for this client
$ socket -> username = $ username ;
// Add the client's username to the global list
$ usernames [ $ username ] = $ username ;
++ $ numUsers ;
$ socket -> addedUser = true ;
$ socket -> emit ( ' login ' , array (
' numUsers ' => $ numUsers
));
// echo globally ( all clients ) that a person has connected
$ socket -> broadcast -> emit ( ' user joined ' , array (
' username ' => $ socket -> username ,
' numUsers ' => $ numUsers
));
});
// When the client emits ' typing' , we broadcast it to others
$ socket -> on ( ' typing ' , function () use ( $ socket ) {
$ socket -> broadcast -> emit ( ' typing ' , array (
' username ' => $ socket -> username
));
});
// When the client emits ' stop typing' , we broadcast it to others
$ socket -> on ( ' stop typing ' , function () use ( $ socket ) {
$ socket -> broadcast -> emit ( ' stop typing ' , array (
' username ' => $ socket -> username
));
});
// When the user disconnects , perform this
$ socket -> on ( ' disconnect ' , function () use ( $ socket ) {
global $ usernames , $ numUsers ;
// Remove the username from global usernames list
if ( $ socket -> addedUser ) {
unset( $ usernames [ $ socket -> username ]);
-- $ numUsers ;
// echo globally that this client has left
$ socket -> broadcast -> emit ( ' user left ' , array (
' username ' => $ socket -> username ,
' numUsers ' => $ numUsers
));
}
});
});
Worker:: runAll ();
(phpsocket.io>=1.1.1 && workerman>=3.3.7 required)
iniciar.php
<?php
use Workerman Worker ;
use PHPSocketIO SocketIO ;
require_once __DIR__ . ' /vendor/autoload.php ' ;
// SSL context
$ context = array (
' ssl ' => array (
' local_cert ' => ' /your/path/of/server.pem ' ,
' local_pk ' => ' /your/path/of/server.key ' ,
' verify_peer ' => false
)
);
$ io = new SocketIO ( 2021 , $ context );
$ io -> on ( ' connection ' , function ( $ connection ) use ( $ io ) {
echo " New connection coming n" ;
});
Worker:: runAll ();
use Workerman Worker ;
use PHPSocketIO SocketIO ;
require_once __DIR__ . ' /vendor/autoload.php ' ;
$ io = new SocketIO ( 2021 );
$ io -> on ( ' connection ' , function ( $ connection ) use ( $ io ) {
$ socket -> on ( ' message with ack ' , function ( $ data , $ callback ) use ( $ socket , $ io ) {
// acknowledgement callback
if ( $ callback && is_callable ( $ callback )) {
$ callback ( 0 );
}
});
});
Worker:: runAll ();
中文手册
demonstração de bate-papo
exemplos de cd/bate-papo
php start.php start
para modo de depuração
php start.php start -d
para modo daemon
php start.php stop
php start.php status
MIT