php - Socket.io 离子 4 和 php
问题描述
我已经使用 socket.io 配置了我的 ionic 4 应用程序,并按照 socket.io 网站上的说明进行操作。localhost 上的一切都运行良好,因为当我node index.js
在命令行中键入时,服务器 socket.io 会启动,并且同一网络中的所有用户都可以在同一个房间里聊天。
我如何配置东西以便它可以在在线服务器上运行?喜欢配置php?
解决方案
这是一个很好的设置。我几乎所有的应用程序中都有它。它是这样的:
首先,你需要在服务器上安装redis和node。
现在,要从服务器触发通知,请创建一个助手:
<?php
namespace App\Helpers;
class SocketIo
{
public static function trigger($event, $data)
{
$redisChannel = 'socket-io';
$redis->publish($redisChannel, json_encode([
'event' => $event,
'data' => $data
]));
}
}
$redis
你的 redis 客户端在哪里。如果你使用 Laravel,你可以设置$redis = app('redis');
现在,创建一个简单的节点文件,例如socket.js
,来实际处理 socket-io:
var server = require('http').Server();
var socket = require('socket.io')(server);
var Redis = require('ioredis');
var redis = new Redis();
require('dotenv').config();
var redisChannel = process.env.SOCKET_IO_CHANNEL || 'socket-io';
redis.subscribe(redisChannel);
redis.on('message', function (channel, message) {
message = JSON.parse(message);
socket.emit(message.event, message.data);
});
server.listen(3000, function () {
console.log('Node server is running socket.js on port 3000');
});
在您的package.json
依赖项中:
"dependencies": {
"dotenv": "^4.0.0",
"ioredis": "^3.1.4",
"socket.io": "^2.0.3"
}
当然,运行npm install
安装依赖项,然后你可以去node socket.js
运行它。
在生产中,您需要安装类似的东西pm2
或supervisor
一直socket.js
运行。
pm2 start socket.js
如果你想和主管一起去,这里是配置:
[program:socket-io]
process_name=%(program_name)s_%(process_num)02d
command=node /var/www/express-callback/socket.js
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
logfile_maxbytes=1MB
stdout_logfile=/var/www/express-callback/storage/logs/socket-io.log
推荐阅读
- postgresql - 从嵌套的 Prisma 事务中创建多条记录?
- adobe - 如何在 Adobe Premiere 中移动带有图像的两个剪辑
- javascript - 为什么闭包在 React 中不起作用?为什么我不能在反应返回值中传播一个对象?
- windows - 如何在我的 Windows 服务器意外重启时收到通知
- python - 如何将引用此数组的变量移回一个?
- database - C++Builder 是否适用于 MSAccess .accdb 文件?
- java - 应用程序完全填充 Android RAM
- c# - 如何使用 DirectLine App Service Extension 重新连接到对话?
- python - 用于确定目录和嵌套子目录中是否存在许多文件的更有效的 Python 脚本
- mysql - 在间接相关表中的项目之间创建任意 1-1 对应关系