node.js - Node.js Socket.io Ionic Nginx - 配置错误?
问题描述
我是套接字和 nginx 的新手,我想做的是使用套接字来发布订单。
使用我目前的配置,API 工作正常(我可以毫无问题地获取和发送数据),但是当我发送订单(使用套接字的路由)时,服务器似乎没有收到 json。
Using:
- Server CentOS 7.
- nginx version: nginx/1.16.1
- MongoDB 4.2
- Node 12.13.1
在本地运行它没有问题,因为我不使用 Nginx。
在/etc/nginx/conf.d/my-domain.conf我有这个:
server {
listen 80;
server_name xx.xx.xx.xxx;
location /socket.io/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass "http://localhost:8080/socket.io/";
}
location / {
proxy_pass "http://localhost:8080/";
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
============================= 服务器端:================== =========
服务器.js
const port = process.env.PORT || 8080;
http.listen(port, () => {
console.log('linstening on port:', port);
});
sockets.js
io.on('connection', function (socket) {
socket.on('post-order', function (order) {
orderDAO.post(order, function (err, ord) {
if(err) return console.log('Error:', err);
io.emit('post-order', ord);
}
});
});
order.js
app.post('/api/v1/orders', function (req, res) {
let order= req.body;
orderDAO.post(order, function (err, ord) {
if (err) {
res.send({'err': err});
} else {
res.json(ord);
}
});
});
orderDAO.js
function OrdersDAO(db) {
let ObjectId = require('mongodb').ObjectID;
let database = db.db('app_habb');
let orders= database.collection('orders')
this.post = function (order, callback) {
orders.insertOne(order, function (err, result) {
if (err) return callback(err, null);
return callback(null, result.ops[0]);
});
}
}
============================ 客户端:================== =========
生成订单.ts
import { Socket } from 'ngx-socket-io';
constructor(private socket: Socket) { }
ngOnInit() {
this.socket.connect();
this.socket.on('post-order', (data) => { // receives nothing
console.log(data);
});
}
sendOrder() {
// Validation code..
// ...
// then:
this.socket.emit("post-order", this.order);
}
我正在尝试的可能吗?我的意思是我正在通过套接字发送一个json。
如果这是可能的,出了什么问题?
我提出请求时没有收到任何错误。
解决方案
推荐阅读
- python - 训练有效,但预测产生恒定值(使用 pytorch 的 cnn)
- typescript - 在 Firestore 中获取所有可以访问其子项的文档
- javascript - 在按钮单击中显示组件(使用挂钩)
- python - 为 Spotify API PKCE 创建代码挑战,为什么它不是字节形式?
- java - 从 c++ 将动态 java 代理加载到 jvm
- angular - 不能使用 Angular Material 日期范围日期过滤器
- python - TypeError:'str'和'int'的实例之间不支持'<='重复
- sql - 将 SQL 中的 VARCHAR 列转换为日期时间格式?
- python - 将 Python 列表划分为仅包含唯一值的列表
- python-3.x - Python - 错误 - ValueError:解包的值太多(预期为 6)