首页 > 后端开发 > 正文

sorket框架php php 怎么使用websocket推送消息

2023-09-02 09:59:28 | 我爱编程网

大家平时对后端开发都十分关注,今天为大家整理了sorket框架php php 怎么使用websocket推送消息,下面就随我爱编程网小编一起来看一下吧。

sorket框架php php 怎么使用websocket推送消息

php 怎么使用websocket推送消息

我使用的工具是基于wokman的web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。

下载和demo地址 -sender

这里面区分服务端和客户端,去上面地址下载源代码,放到你服务端。使用相关命令开启服务。

其中有一个文件是start_io.php,这个文件算是核心,里面有怎么发送socket消息的代码,也会有监控用户上下线的接口,在这个地方可以根据业务需要拓展自己的代码需求。类似: 用户在socket检测用户上下线的是时候,可以http请求到自己的api层

下面我贴一下我的代码

当然了 可能会有童鞋问了,socket如果监听到自己的api发送消息呢。这个时候我们可以看到start_io.php这个文件这个地方

这个地方明确表明了监听端口,websocket跟api在同一个服务器上面,所以用了0.0.0.0,所以你在http服务端如果想发消息给客户端,只需要发送到这个端口上面,socket自动会监听到发送给客户端。

sorket框架php php 怎么使用websocket推送消息我爱编程网

php为什么不适合socket


作为一名非底层程序员,要想深入了解socket的内部实现机制是很困难的,我们只需明白socket是一套操作系统封装好的实现进程通信的函数,会创建和调用就够了。

PHP的语言特性和自身定位决定了它只适合做socket客户端,而不适合做socket服务器端。
因为socket主要面向底层和网络服务开发,一般服务器端都是用 C 或 Java 等语言实现,这样能更好地操作底层,对网络服务开发中遇到的问题(如并发、阻塞等)也有成熟完善的解决方案,而PHP显然不适合这种应用场景。 (推荐学习:PHP视频教程)
实际上,PHP操作MySQL数据库也是通过socket进行的,这正是由于socket屏蔽了底层的协议,使得网络服务之间的互联互通变得简单。

除了传统的服务器端语言实现的socket外,随着HTML5的流行,浏览器客户端实现的WebSocket也逐渐兴起,对于这一点值得关注,FlashSocket也是一个不错的解决方案。

要在客户端操作socket,可使用fsockopen、socket_create 或 stream_socket_client 等函数实现,如果是PHP5,推荐使用stream_socket_client。

socket交互应用实例:使用socket提交表单

新建一个 test.php 文件,向 提交表单数据,代码如下:
<?php
$data = array('comment'=>'this is a robot comment');
$data = http_build_query($data);

$out = "POST HTTP/1.1\r\n"; // 通过POST方式发送数据
$out .= "Host: demo.com\r\n";
$out .= "Content-type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
$out .= "Content-length: ".strlen($data)."\r\n";
$out .= "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:48.0) Gecko/20100101 Firefox/48.0"."\r\n";
$out .= "Connection: close"."\r\n"."\r\n"; // 注意:此处有两个 \r\n

$out .= $data."\r\n"; // 正文数据

$fp = fsockopen("demo.com", 80, $errno, $errstr, 30); // 创建socket客户端连接

// $fp = stream_socket_client("tcp://demo.com:80", $errno, $errstr, 30); 推荐这种写法

fwrite($fp, $out); // 向服务器发送数据

while (!feof($fp)) {
echo fgets($fp, 1280); // 读取服务器响应的数据
}
fclose($fp); // 关闭socket连接
?>需要注意以下几点:
fsockopen的第一个参数,也可以使用IP地址,不要带 字符串,除非使用SSL等
请求头(headers)不一定要带上所有的头域,一般只需带上几个核心的header即可
在最后一个header处,即 Connection 后有两个换行
注意编码问题

sorket框架php php 怎么使用websocket推送消息

socketphp心跳包和报文区分

socketphp心跳包和报文区分如下:
1、心跳包HeartbeatPacket通常是指在网络连接稳定时,定期发送的一种探测包,用于检测客户端和服务器之间的连接是否正常,通常情况下,客户端和服务器之间会通过通信协议规定一个固定时间间隔,客户端每隔一段时间就主动向服务器发送一个心跳包,以保持与服务器的连接状态,如果服务器在规定的时间内未收到来自客户端的心跳包,则认为该连接已经断开,并可以将连接资源释放,心跳包通常只包含一些很小的控制信息,比如一个特定的标识符或者时间戳等。
2、报文Message通常是指在Socket通信中传输的数据块,其格式和内容需要根据具体的通信协议来定义,通常包含了一定的协议头和协议体,在应用层协议中,报文内容可能涉及到业务逻辑,数据操作等方面,比如HTTP协议中的请求报文,响应报文,在IM通信中的聊天消息等,在网络传输过程中,报文一般会被分成多个数据包进行传输,接收端需要根据协议规定对数据包进行组装和解析,才能够还原出完整的报文内容。

以上就是今天分享给大家的内容了,想要了解更多后端开发资讯,敬请关注我爱编程网!
与“sorket框架php php 怎么使用websocket推送消息”相关推荐
php消息推送前前台与后台框架 php 怎么使用websocket推送消息
php消息推送前前台与后台框架 php 怎么使用websocket推送消息

php如何实现消息推送当我们遇到消息推送功能要如何开发呢?一、ajax轮询,定时去请求服务器数据(推荐学习:PHP视频教程)通过观察thinkphp官网貌似也是用的这个方法,下边将这种方法整理一下:Notify.php//获取通知消息publicfunctiongetNotifyCount(){$msg=db('message_logs')-&gt;wher

2023-10-06 18:50:52
php企业微信推送框架 php 怎么使用websocket推送消息
php企业微信推送框架 php 怎么使用websocket推送消息

php怎么使用websocket推送消息我使用的工具是基于wokman的web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。下载和demo地址-sender这里面区分服务

2023-09-26 02:42:51
长连接php框架 php 怎么使用websocket推送消息
长连接php框架 php 怎么使用websocket推送消息

php怎么使用websocket推送消息我使用的工具是基于wokman的web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。下载和demo地址-sender这里面区分服务

2023-09-12 09:54:34
PHP消息推送框架 php 怎么做 内部的消息推送呢
PHP消息推送框架 php 怎么做 内部的消息推送呢

php如何实现消息推送当我们遇到消息推送功能要如何开发呢?一、ajax轮询,定时去请求服务器数据(推荐学习:PHP视频教程)通过观察thinkphp官网貌似也是用的这个方法,下边将这种方法整理一下:Notify.php//获取通知消息publicfunctiongetNotifyCount(){$msg=db('message_logs')-&gt;wher

2023-09-14 01:59:29
php推送框架 php 怎么做 内部的消息推送呢
php推送框架 php 怎么做 内部的消息推送呢

php怎么使用websocket推送消息我使用的工具是基于wokman的web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。下载和demo地址-sender这里面区分服务

2023-08-28 12:43:34
ci框架友盟推送php php如何实现消息推送
ci框架友盟推送php php如何实现消息推送

php如何编写一个微信公众平台的消息推送?给你个代码样例 不可以直接复制使用/** * 发送模板消息 * @param $tmpId 模板ID * @param $openId 用户openID * @param $param 模板参数 * @param $url * @return mixed * @author fjlhuman */public function sendTmpM

2023-09-30 16:09:04
php微信推送框架 php如何编写一个微信公众平台的消息推送?
php微信推送框架 php如何编写一个微信公众平台的消息推送?

php怎么获取微信服务器发送的componentverifyticketyii框架我当时针对这个问题的解决方法就是使用renderPartialrenderPartial这个函数是直接渲染视图文件,而不会加载main.php所以我写出来之后发现很多页面都包含了相同段代码。你可以去后盾人平台看一下,里面的东西不错php如何实现消息推送当我们遇到消息推送功能要如何开发呢?

2023-09-23 00:00:29
具有推送功能的PHP框架 如何在php后端及时推送消息给客户端
具有推送功能的PHP框架 如何在php后端及时推送消息给客户端

php怎么使用websocket推送消息我使用的工具是基于wokman的web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。下载和demo地址-sender这里面区分服务

2023-09-30 07:13:28