当前位置:首页 > 数据库 > 正文

swoole websocket,websocket和tcp的区别

swoole websocket,websocket和tcp的区别

大家好,今天来为大家解答swoole websocket这个问题的一些问题点,包括websocket和tcp的区别也一样很多人还不知道,因此呢,今天就来为大家分析分析,...

大家好,今天来为大家解答swoole websocket这个问题的一些问题点,包括websocket和tcp的区别也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

PHP和Nodejs能配合使用吗

可以

如你安装了Python,可以立马执行一个简单的命令,一个简便的开发服务器就完成了。python-mSimpleHTTPServer

但是PHP,直到php5.4才支持类似的功能

$php-S0.0.0.0:8000

PHP5.4.0DevelopmentServerstartedatTueAug2123:21:502012

Listeningon0.0.0.0:8000

Documentrootis/home/tom

PressCtrl-Ctoquit.

php本身就可以架一个服务器,Nodejs也可以架一个服务器,那么就不用啥apache啦,nginx啦

基本思路就是Node开启一个服务器作为前台,监听80端口,类似Apache的角色,php开启一个服务器在后台运行。Node服务将http请求转发给php服务器执行,执行完成后返回给node服务器,node服务器再返回给浏览器

Node承担的是一个中间的代理角色

varfs=require('fs'),

http=require('http'),

spawn=require('child_process').spawn,

phpserver;

phpserver=spawn('php',['-S','0.0.0.0:8000']);

phpserver.stdout.on('data',function(data){

console.log('stdout:'+data);

});

phpserver.stderr.on('data',function(data){

console.log('stderr:'+data);

});

phpserver.on('exit',function(code){

console.log('childprocessexitedwithcode'+code);

});

process.on('exit',function(){

phpserver.kill('SIGHUP');

});

functionhandleRequest(request,response){

varheaders={};

for(varxinrequest.headers){

headers[x]=request.headers[x];

}

headers['Content-Type']='application/x-www-form-urlencoded';

varproxy_request=http.request({

host:'localhost',

port:8000,

method:request.method,

path:request.url,

headers:headers

});

proxy_request.on('response',function(proxy_response){

response.writeHead(proxy_response.statusCode,proxy_response.headers);

proxy_response.on('data',function(chunk){

response.write(newBuffer(chunk));

});

proxy_response.on('end',function(){

response.end();

});

});

request.on('data',function(chunk){

proxy_request.write(newBuffer(chunk));

});

request.on('end',function(){

proxy_request.end();

});

}

http.createServer(handleRequest).listen(80);

保存上面的文件为server.js然后在命令行里执行

nodeserver.js

一个node和php混搭的服务器就搭建成功了

ie是否支持websocket

既然都用WebSocket(双向)了,其实完全可以用WebSocket向服务器提交数据,就不需要用AJAX再开一个HTTP(单向)连接了.

楼主的在线客服系统要把用户的消息保存到数据库,可以考虑先把消息存储在Redis里,在连接关闭时再把消息存储到MySQL,这样就变成了一个连接(WebSocket或HTTPkeep-alive)对应一次数据库批量写,性能更好.

服务器端建议用PHP的Swoole,处理WebSocket请求就3个事件(onOpen/onMessage/onClose)的事.

不过需要注意的是,一些浏览器如IE9/IE8都是不支持WebSocket协议的,这时你可以考虑降级到HTTP(Swoole监听onRequest事件就能处理HTTP),用一个HTTP(AJAX)长轮询连接来实现消息通知,服务器端用Redis的PubSub实现消息通知,Swoole提供有异步Redis客户端,能实现异步订阅Redis频道实时获取消息.

文章到此结束,如果本次分享的swoole websocket和websocket和tcp的区别的问题解决了您的问题,那么我们由衷的感到高兴!

最新文章