Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript python和js中的WebSocket_Javascript_Python_Angularjs_Websocket - Fatal编程技术网

Javascript python和js中的WebSocket

Javascript python和js中的WebSocket,javascript,python,angularjs,websocket,Javascript,Python,Angularjs,Websocket,我目前正在创建一个网站,我对WebSocket完全感到困惑 我的网站上显示了数据库中的一些数据。现在每隔一段时间数据库中就会有新的条目,这些条目应该显示在网站上,而不需要重新加载,现在我认为这可以通过WebSocket实现 我使用web.py作为我网站的框架,我使用AngularJS 在我的app.py中,我接收数据库条目并将它们作为JSON返回 在js中,我希望接收JSON消息并将其保存在$scope中,然后使用AngularJS在网站上“打印”,我为其创建了一个客户端WebSocket,如下

我目前正在创建一个网站,我对WebSocket完全感到困惑

我的网站上显示了数据库中的一些数据。现在每隔一段时间数据库中就会有新的条目,这些条目应该显示在网站上,而不需要重新加载,现在我认为这可以通过WebSocket实现

我使用web.py作为我网站的框架,我使用AngularJS

在我的
app.py
中,我接收数据库条目并将它们作为JSON返回

在js中,我希望接收JSON消息并将其保存在
$scope
中,然后使用AngularJS在网站上“打印”,我为其创建了一个客户端WebSocket,如下所示:

var app = angular.module('web');

app.factory('runservice', function() {
  var service = {};
  service.connect = function() {
    if(service.ws) { return; }

    var ws = new WebSocket('wss://localhost:8080');
    ws.onopen = function() {
      service.callback("Success");
    };

    ws.onerror = function(evt) {
      service.callback("Error: " + evt.data);
    }

    ws.onmessage = function(message) {
      service.callback(message.data);
    };

    service.ws = ws;

  }
  service.subscribe = function(callback) {
    service.callback = callback;
  }
  return service;
});


app.controller('runController', function($scope, runservice) {
  runservice.connect();
  runservice.subscribe(function(message) {
    var data = JSON.parse(message);
    $scope.runs = data;
  });
});

现在,我的app.py中是否需要服务器端套接字或其他内容?如果是这样的话,有谁能举例说明我是如何在web.py中实现这一点的?

您肯定需要在服务器上安装websocket代码,否则您的客户端无法保持与服务器的连接,反之亦然

如果您希望使用实时websockets,那么这个web.py应用程序服务器包将非常有用,对于您的客户端应用程序也是如此

另一种选择是只需长时间轮询服务器。AKA每隔约10秒向应用程序发出异步请求,并仅检索最新条目


我希望这能有所帮助

我曾经尝试过10秒的请求,但我认为这是一个丑陋的解决方案,这就是为什么我选择websockets,我将检查两个建议的项目,谢谢。我仍然有点困惑,如果你打开某个网页,web.py将自动执行页面逻辑(相应的类),这就是我返回JSON数据的地方。我是否必须将JSON数据作为消息返回给客户端(例如socket.send(message)),或者我仍然可以像以前一样正常返回它?嘿,我不完全确定我是否理解这个问题。。。在初始加载时,您将像往常一样从服务器返回响应。一旦在客户端和服务器之间建立了套接字,就可以通过套接字从服务器向客户端发送消息。从文档中可以看到类似于
webpy\u socketio.send(session\u id,message)
我已经根据github上socketio自述文件中的“running”部分调整了app.py,现在每个文件都有一个404(/static/*)