首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用AngularJs和Yii2实现实时

使用AngularJs和Yii2实现实时
EN

Stack Overflow用户
提问于 2015-09-16 04:57:01
回答 1查看 1.9K关注 0票数 6

我正在开发一个带有AngularJS的Yii2 REST API,供前端使用。

我需要一种方法来实现实时方法,例如聊天,或者进行一些实时通知。

这是可能的吗,如何实现?我一直在读有关Ratchet、Socket.io和其他一些东西的文章,但我不知道如何让它们适合休息,或者这是不是应该这样做。

任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2015-10-03 05:00:20

这里有几个选项。

短/长轮询(使用setTimeout)

代码语言:javascript
复制
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 }
        );
    }
});

对于客户端的短轮询和长轮询,您发送请求,等待获得响应,然后等待3秒,然后再次触发。

短/长轮询在服务器端的工作方式不同。短轮询将立即返回响应-无论是否发生了变化。长轮询,您保持连接打开,当有更改时,然后返回数据。注意不要打开太多的连接。

Socket.io (websockets)

我建议你在自己的web服务器上使用像node.js这样的东西来实现websockets,或者使用像Firebase这样的托管解决方案。

Firebase的特点是,您可以从PHP向firebase服务器上的REST端点发送post请求。您的javascript可以连接到该端点,并监听更改并相应地更新dom。它可能是所有实现中最简单的。

我个人不会使用PHP进行套接字编程,但这是可以做到的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32595481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档