小编rhy*_*yek的帖子

EventSource(SSE)是否应该尝试无限期重新连接?

我正在开发一个利用Server-Sent-Events的项目,并且遇到了一些有趣的事情:Chrome和Firefox之间的连接丢失处理方式不同.

在Chrome 35或Opera 22上,如果您丢失了与服务器的连接,它将每隔几秒尝试无限期重新连接,直到成功为止.另一方面,在Firefox 30上,它只会尝试一次,然后您必须刷新页面或处理引发的错误事件并手动重新连接.

我更喜欢Chrome或Opera的方式,但是阅读http://www.w3.org/TR/2012/WD-eventsource-20120426/#processing-model,似乎一旦EventSource尝试重新连接并失败由于网络错误或其他原因,它不应重试连接.但不确定我是否正确理解规范.

我开始要求用户使用Firefox,主要是因为你不能在Chrome上打开同一个URL的事件流,但是这个新发现可能更多的是一个问题.虽然,如果Firefox的行为符合规范,那么我不妨以某种方式解决它.

编辑:

我现在要继续以Firefox为目标.这就是我处理重新连接的方式:

var es = null;
function initES() {
    if (es == null || es.readyState == 2) { // this is probably not necessary.
        es = new EventSource('/push');
        es.onerror = function(e) {
            if (es.readyState == 2) {
                setTimeout(initES, 5000);
            }
        };
        //all event listeners should go here.
    }
}
initES();
Run Code Online (Sandbox Code Playgroud)

javascript firefox google-chrome server-sent-events

21
推荐指数
4
解决办法
1万
查看次数

如何处理金字塔中的模型更改

在生产阶段,我很可能会考虑迁移功能(有版本等),但是当我处于开发阶段时,我想知道处理models.py中任何更改的最常用方法是什么?该应用程序使用SQLAlchemy进行设置.

我对python web框架比较陌生.我的背景是PHP,最近我完成了一个使用Symfony 1.4的项目,我通常可以这样做symfony doctrine:build --all --and-load,它将负责重建模型类,重新创建数据库,以及加载数据夹具等等.

目前我正在做的只是删除数据库,重新创建它,并使用贴纸来提供应用程序,这需要重新创建表等.

这可能是一个菜鸟问题,但你去了.

pylons sqlalchemy pyramid

8
推荐指数
1
解决办法
2172
查看次数

DataGridRow MultiDataTrigger for Background:IsSelected条件不起作用

我有一个绑定到集合的数据网格.我已将以下rowstyle应用于datagrid:

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Status}" Value="Down">
                <Setter Property="Background" Value="Red" />
                <Setter Property="Foreground" Value="White" />
            </DataTrigger>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding Status}" Value="Down" />
                    <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsSelected}" Value="True" />
                </MultiDataTrigger.Conditions>
                <Setter Property="Background" Value="Green" />
                <Setter Property="Foreground" Value="White" />
            </MultiDataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>
Run Code Online (Sandbox Code Playgroud)

数据触发器正在工作,但不是多数据触发器.失败的条件是检查datagridrow上的IsSelected为true的条件.如果我改变它所以它使用一个总是返回true的valueconverter我会看到行为绿色.

基本上我希望数据对象将status属性设置为down的行为红色,但是当我选择那些行时,它们需要是绿色(或实际上是黑色的)而不是默认的蓝色.

wpf datagrid triggers background datatrigger

2
推荐指数
1
解决办法
2875
查看次数