关于websocket
websocket是html5的重要feature,它直接在浏览器上对与socket的支持,这给了web开发无限的想象。
他解决了web实时化的问题,相比传统http有如下好处:
一个WEB客户端只建立一个TCP连接
Websocket服务端可以推送(push)数据到web客户端.
有更加轻量级的头,减少数据传送量
本文来重点来分析下。
websocket的原理和应用
websocket通信协议实现的是基于浏览器的原生socket,通过浏览器的支持在web上实现了与服务器端的socket通信。
WebSocket没有试图在HTTP之上模拟server推送,而是直接在TCP之上定义了帧协议,因此WebSocket能够支持双向的通信。
node.js与websocket的结合
首先websocket API是基于事件的,他是对于客户端而言。
而node.js天生就是一个高效的服务端语言,可以直接使用 javascript直接来处理来自客户端的请求。也就是说:如果服务端这边需要大量的业务逻辑开发,则可以直接使用node开发。通过node和 websocket的结合可以开发出很多实时性要求很高的web应用。
简单的说就是:用node实现了websocket draft-76的协议,同时他对外提供了api,可以方便其他应用程序简化编程。
注意问题:
注意websocket只是个协议,他没有自己的服务,他的启动是通过脚本启动的,本文中的安装首先是默认php已安装好的
1.安装node
cd /usr/local/src
//下载node
wget https://nodejs.org/dist/v15.3.0/node-v15.3.0.tar.gz
//解压
tar -zxvf node-v15.3.0.tar.gz
配置编译安装node
cd node-v15.3.0
//配置 prefix 安装路径
./configure --prefix=/usr/local/node
//编译 安装(注意时间很长)
make && make install
配置Node环境
//建立软连接
ln -s /usr/local/node/bin/npm /usr/local/bin/
ln -s /usr/local/node/bin/node /usr/local/bin/
检测是否安装成功
node -v
使用node
2.安装Websocket
使用Node下载
npm install websocket
至此websocket安装完成
3使用websocket
(php使用websocket需要先下载扩展:php_sockets,然后在php安装目录下的php.ini文件 extension=php_sockets.dll)
php 服务端
服务端文件(启动脚本:注意这个文件中的具体代码,请自行百度搜索,在此不在展示)
serverSocket.php
<?php
class SocketService
{
}
$sock = new SocketService('127.0.0.1','9000');
$sock->run();
执行脚本(之后便可以通过接口、html发送/获取数据)
php serverSocket.php