у меня есть точка php, выставляя эти конечные точки, например,
[GET] /api/news --> [return] [ {id:1,title:'news1'},{id:1,title:'news1'} ];
[POST] /api/news?title=<string> --> [return] {id:NEW_ID,title:$title};
и мой веб-приложение использует угловой 1, чтобы получать новости.
//to get all news
$http.get('http://server.com/api/news').then(function(res){
$scope.news = res.data;
});
//to post a new news
$http.post('http://server.com/api/news',{title:'news3'}).then(function(res){
$scope.news.push(res.data);
});
это будет работать нормально, за исключением того, что мне придется объединять каждый интервал для получения новых новостей, поэтому я подумал, что что-то вроде socket.io может помочь.
Я пытаюсь достичь.
так что мое изменение в передний конец может быть что-то вроде
var socket = io('http://localhost:3700');
socket.on('news', function (data) {
$timeout(()=>{$scope.news = data;});
});
socket.on('news_posted', function (data) {
$timeout(()=>{$scope.news.push(data);});
});
$scope.post = function(title){
socket.emit('post_news', { title: title });
}
Теперь, что я понятия не имею, как сделать такой простой сервер?
var express = require("express");
var app = express();
var port = 3700;
var io = require('socket.io').listen(app.listen(port));
//setting CORS
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:8100");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key,auth-client,auth-uid,auth-token');
if (req.method == 'OPTIONS') {
res.status(200).end();
} else {
next();
}
});
io.sockets.on('connection', function (socket) {
console.log('a user connected');
///BLOCK 1
///GET ALL POSTS FROM API AND EMIT news event BACK TO USER
///
socket.on('new_post', function(msg){
///BLOCK 2
///POST title TO API AND EMIT BACK news_posted WITH THE RESPONSE
});
});
Задача ещё не решена.
Других решений пока нет …