我可以用其他方式做到这一点,但是现在我需要从服务器发送一个请求,以避免设置一个计时器来每隔100毫秒左右检查一次,相反,我可以只从金字塔向网站发送一个请求。到目前为止,我尝试了这个,但是没有运气:

我创建的用于保存请求的视图:

@view_config(route_name='request', request_method="POST")
def request(self):
    sometext = "Some random text"
    return Response(sometext)


阿贾克斯:

function getmsg() {
    $.ajax({
        type:"GET",
        url:"/req", // Route for the View
        dataType: "text"
        success:function(result){
            alert( result );
            }
    });


该请求只是不发送!
任何帮助,将不胜感激!

最佳答案

您不能从服务器“发布”。这不是Pyramid的限制,而是HTTP的方式(客户端向服务器发出请求)。

有几种方法可以根据需要将数据从后端发送到前端:


轮询:浏览器每秒发送一次请求。在大多数情况下,这是最简单的方法。除非该应用程序具有很高的“实时性”,否则这就是我要解决的问题。
WebSockets:浏览器将连接从HTTP升级到WebSockets,然后浏览器只要保持打开状态就可以从WebSocket连接接收数据而无需任何请求。它运作良好,但需要您具有WebSocket设置(服务器端),因此可能涉及其中。
服务器发送事件:浏览器保持HTTP连接打开,服务器可以通过该连接发送数据。从理论上讲,这非常容易。实际上,该服务器必须能够处理许多同时连接,因此它可能必须是异步服务器。我不确定金字塔是否能在生产中很好地支持这一点(也许还加上古尼康?)。

10-08 03:10