脚本宝典收集整理的这篇文章主要介绍了php – 我们需要配置什么才能在https服务器中实现实时通知模块(使用redis和socket.io)?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
ssl文件
SSLCertificateFile /etc/letsencrypt/live/dev.test.de/fullchain.PEm SSLCertificateKeyFile /etc/letsencrypt/live/dev.test.de/PRivkey.pem
socket.js
VAR app = require('exPress')(); var http = require('http').Server(app); var io = require('socket.io')(http); var redis = require('redis'); io.on('connection',function(socket){ console.LOG('a user connected'); var redisClient = redis.createClient(); /* Realtime message subscribe */ redisClient.subscribe('message'); redisClient.on('message',function(channel,message){ /*console.log('new message in queue',channel,message);*/ socket.emIT(channel,message); }); /* Realtime inquiry subscribe */ redisClient.subscribe('inquiryCount'); redisClient.on('inquiryCount',message){ /*console.log('new inquiry in queue',message); }); socket.on('disconnect',function(){ redisClient.quit(); console.log('user disconnected'); }); }); http.listen(3000,function(){ console.log('listening on *:3000'); });
app.blade.PHP
<script src="https://cdnjs.clouDFlare.COM/ajax/libs/socket.io/1.4.8/socket.io.min.js"></script> <script> var socket = io('{{env('APP_URL')}}:3000'); /* Realtime message notification */ socket.on('message',function(data){ if(data){ /* var res = $.parseJSON(data);*/ $('.messages-menu').empty(); $('.messages-menu').htML(data); } }); /* Realtime inquiry notification */ socket.on('inquiryCount',function(data){ if(data){ $('.tasks-menu').empty(); $('.tasks-menu').html(data); } }); </script>
public function privateMessageAPICount($id) { $message = 'taking count of data'; if(count($message) > 0){ $redis = Redis::connection(); $redis->publish('message',$message); return response()->json(['status' => 'success'],200); } else { return response()->json(['status' => 'No Result'],404); } } public function inquiryAPIUnreadCount($id) { $inquiryCount .= 'taking count of data'; if(count($inquiryCount ) > 0){ $redis = Redis::connection(); $redis->publish('inquiryCount',$inquiryCount); return response()->json(['status' => 'success'],404); } }
var app = require('express')(); var fs = require('fs'); var privateKey = fs.readFileSync('/etc/letsencrypt/live/dev.test.de/privkey.pem','utf8'); var certificate = fs.readFileSync('/etc/letsencrypt/live/dev.test.de/fullchain.pem','utf8'); var credentials = {key: privateKey,cert: certificate}; var https = require('https').createServer(credentials,app); var io = require('socket.io')(https); var redis = require('redis'); io.on('connection',function(){ redisClient.quit(); console.log('user disconnected'); }); }); https.listen(3000,function(){ console.log('listening on *:3000'); });
您的APP_URL必须以https://开头.
我建议使用laravel-echo-server来处理ws-connections,它更简单
以上是脚本宝典为你收集整理的php – 我们需要配置什么才能在https服务器中实现实时通知模块(使用redis和socket.io)?全部内容,希望文章能够帮你解决php – 我们需要配置什么才能在https服务器中实现实时通知模块(使用redis和socket.io)?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。