900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > php socket邮箱 phpsocket.io php版本的socket.io

php socket邮箱 phpsocket.io php版本的socket.io

时间:2019-09-29 15:02:24

相关推荐

php socket邮箱 phpsocket.io php版本的socket.io

PHPSocket.IO设计的目标是利用PHP构建能够在不同浏览器和移动设备上良好运行的实时应用,如实时分析系统、在线聊天室、在线客服系统、评论系统、WebIM等。

PHPSocket.IO与workerman的区别是,PHPSocket.IO基于workerman开发,workerman有的特性PHPSocket.IO都支持。

PHPSocket.IO最大的优势是对各种浏览器的兼容性更好。

手册

手册

安装

请使用composer集成phpsocket.io。

脚本中引用vendor中的autoload.php实现SocketIO相关类的加载。例如

require_once '/你的vendor路径/autoload.php';

下面服务端的代码略去了这段代码。

服务端和客户端连接

创建一个SocketIO服务端

use PHPSocketIO\SocketIO;

// 创建socket.io服务端,监听端口

$io = new SocketIO();

// 当有客户端连接时打印一行文字

$io->on('connection', function($connection)use($io){

echo "new connection coming\n";

});

Worker::runAll();

客户端

// 如果服务端不在本机,请把127.0.0.1改成服务端ip

var socket = io('http://127.0.0.1:');

// 当连接服务端成功时触发connect默认事件

socket.on('connect', function(){

console.log('connect success');

});

自定义事件

socket.io主要是通过事件来进行通讯交互的。

除了自带的connect,message,disconnect三个事件以外,在服务端和客户端用户可以自定义事件。

服务端和客户端都通过emit方法触发对端的事件。

例如下面的代码在服务端定义了一个chat message事件,事件参数为$msg。

use PHPSocketIO\SocketIO;

$io = new SocketIO();

// 当有客户端连接时

$io->on('connection', function($connection)use($io){

// 定义chat message事件回调函数

$connection->on('chat message', function($msg)use($io){

// 触发所有客户端定义的chat message from server事件

$io->emit('chat message from server', $msg);

});

});

客户端通过下面的方法触发服务端的chat message事件。

// 连接服务端

var socket = io('http://127.0.0.1:3120');

// 触发服务端的chat message事件

socket.emit('chat message', '这个是消息内容...');

// 服务端通过emit('chat message from server', $msg)触发客户端的chat message from server事件

socket.on('chat message from server', function(msg){

console.log('get message:' + msg + ' from server');

});

分组

socket.io提供分组功能,允许向某个分组发送事件,例如向某个房间广播数据。

1、加入分组(一个连接可以加入多个分组)

$connection->join('group name');

2、离开分组(连接断开时会自动从分组中离开)

$connection->leave('group name');

向客户端发送事件的各种方法

$io是SocketIO对象。$connection是客户端连接

$data可以是数字和字符串,也可以是数组。当$data是数组时,客户端会自动转换为javascript对象。

同理如果客户端向服务端emit某个事件传递的是一个javascript对象,在服务端接收时会自动转换为php数组。

1、向当前客户端发送事件

$connection->emit('event name', $data);

2、向所有客户端发送事件

$io->emit('event name', $data);

3、向所有客户端发送事件,但不包括当前连接。

$connection->sockets->emit('event name', $data);

4、向某个分组的所有客户端发送事件

$io->to('group name')->emit('event name', $data);

一个非常简单的聊天服务端示例

use PHPSocketIO\SocketIO;

// listen port for socket.io client

$io = new SocketIO();

$io->on('connection', function($socket)use($io){

$socket->on('chat message', function($msg)use($io){

$io->emit('chat message', $msg);

});

});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。