Bạn có một vài tùy chọn tại đây.
ngắn/dài Polling (sử dụng setTimeout)
app.controller("MyController", function($scope, $timeout, $http) {
$scope.messages = [];
$timeout(callAtTimeout, 3000);
function callAtTimeout() {
console.log("Timeout occurred");
$http.get('PATH TO RESOURCE TO GET NEW MESSAGES').then(
function(res) { // update $scope.messages etc... },
function(err) { // handle error }
);
}
});
Đối với cả hai bỏ phiếu ngắn hạn và dài về phía khách hàng, bạn gửi yêu cầu, chờ đợi để có được một phản ứng trở lại, sau đó chờ 3 giây và lửa một lần nữa.
Bỏ phiếu ngắn/dài hoạt động khác nhau ở phía máy chủ. Việc bỏ phiếu ngắn sẽ chỉ trả lại phản hồi ngay lập tức - cho dù có điều gì đó đã thay đổi hay không. Bỏ phiếu dài, bạn giữ kết nối mở và khi có thay đổi, sau đó bạn trả lại dữ liệu. Cẩn thận với việc giữ quá nhiều kết nối mở.
Socket.io (WebSockets)
tôi sẽ khuyên bạn nên thực hiện bằng cách sử dụng WebSockets cái gì đó như Node.js trên máy chủ web của riêng bạn hoặc một giải pháp lưu trữ như căn cứ hỏa lực.
Điều với Firebase là từ PHP, bạn có thể gửi yêu cầu đăng bài đến điểm cuối REST trên máy chủ Firebase. Javascript của bạn có thể kết nối với điểm cuối đó và lắng nghe những thay đổi và cập nhật các dom cho phù hợp. Nó có thể là đơn giản nhất để thực hiện.
Cá nhân tôi không sử dụng PHP để lập trình socket nhưng có thể thực hiện được.
API REST giao tiếp qua giao tiếp HTTP và thời gian thực thường được thực hiện qua WebSockets (với các hạn chế đối với HTTP, nhưng được minh bạch trong các khung công tác tốt như Socket.io). Hai cơ bản là khác nhau. Điều đó đang được nói, không có lý do gì mà bạn không thể có các điểm cuối HTTP REST và điểm cuối WebSockets trong cùng một ứng dụng. –
Vì vậy, có thể có cùng một API REST trên _ ** "tài nguyên websocket" ** _ không? Làm thế nào để? – arosgab
Một API REST theo quy ước sử dụng các phương thức yêu cầu HTTP ('POST' /' PUT'/'DELETE' /' PATCH') để xác định loại hoạt động được yêu cầu (đọc/ghi/xóa/cập nhật). Điều này tất nhiên không áp dụng cho WS. Bạn có thể viết một trình nghe WS mà chấp nhận các sự kiện chứa một thuộc tính "type" hoặc "method", và hoạt động trên các thực thể. Lưu ý rằng thiết kế này vi phạm kiến trúc REST theo nhiều cách, và khó sử dụng hơn từ góc độ khách hàng. –