【发布时间】:2020-11-03 15:00:12
【问题描述】:
场景:创建一个节点 API (GET),在 socket.io 节点服务器中调用该 API,并在 Angular 客户端中调用该套接字服务器。
我做了什么:为获取请求和发布创建了一个节点 API,并创建了一个套接字服务器,我尝试使用该应用程序。
问题: 1. 我尝试使用 API,但无法获取套接字服务器中的数据 2. 如果可以,我如何在单击按钮时获取套接字数据角度应用?
注意:我在 3000 服务器上运行 Node API,在 3001 上运行套接字服务器。
下面是我的代码
在 3000 端口上运行的节点 api 代码:
const express = require('express')
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express()
const port = 3000
let books = [{
"isbn": "9781593275846",
"title": "Eloquent JavaScript, Second Edition",
"author": "Marijn Haverbeke",
"publish_date": "2014-12-14",
"publisher": "No Starch Press",
"numOfPages": 472,
}];
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.post('/book', (req, res) => {
const book = req.body;
// output the book to the console for debugging
console.log(book);
books.push(book);
res.send('Book is added to the database');
});
app.get('/book', (req, res) => {
res.json(books);
});
app.listen(port, () => console.log(`Hello world app listening on port ${port}!`));
在 3001 上运行的 Socket .io 服务器
var app = require('express')();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
const apiUrl="http://localhost:3000/book"
io.on('connection', function (socket) {
socket.on('getBanners', function(data){
request.get(apiUrl,function (error, response, body){
console.log(body)
socket.emit('result', {res:JSON.parse(body)})
})
});
});
http.listen(3001, function(){
console.log('listening on *:3001');
});
注意:Node API 服务器 --> socketio 服务器(不是客户端)
【问题讨论】:
标签: javascript node.js angular sockets socket.io