2017-04-25 7 views
1

私は非常に単純なHTTPServerをPythonで実装しています。コードは次のとおりです:PythonのSimpleHTTPサーバーへの強制リロード

import SimpleHTTPServer 
import SocketServer as socketserver 
import os 
import threading 

class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): 
    path_to_image = 'RGBWebcam1.png' 
    img = open(path_to_image, 'rb') 
    statinfo = os.stat(path_to_image) 
    img_size = statinfo.st_size 
    print(img_size) 

def do_HEAD(self): 
    self.send_response(200) 
    self.send_header("Content-type", "image/png") 
    self.send_header("Content-length", img_size) 
    self.end_headers() 

def do_GET(self): 
    self.send_response(200) 
    self.send_header("Content-type", "image/png") 
    self.send_header("Content-length", img_size) 
    self.end_headers() 
    f = open(path_to_image, 'rb') 
    self.wfile.write(f.read()) 
    f.close()   

class MyServer(socketserver.ThreadingMixIn, socketserver.TCPServer): 
    def __init__(self, server_adress, RequestHandlerClass): 
     self.allow_reuse_address = True 
     socketserver.TCPServer.__init__(self, server_adress, RequestHandlerClass, False) 

if __name__ == "__main__": 
    HOST, PORT = "192.168.2.10", 9999 
    server = MyServer((HOST, PORT), MyHandler) 
    server.server_bind() 
    server.server_activate() 
    server_thread = threading.Thread(target=server.serve_forever) 
    server_thread.start() 
    while(1): 
     print "test" 

私が特定のIPアドレスに接続すると、ページがロードされ、すべて正常です。ページがn秒ごとに自動的にリフレッシュされるようにするといいでしょう。 私は非常にPythonには新しく、特にWebコーディングには新しいです。私はLiveReloadを見つけましたが、私はこれらの2つのライブラリをどのようにマージするかについて私の頭を得ることはできません。

は、サーバーがリフレッシュするためにそれを伝えたい場合は、クライアントへの接続を必要としますあなたの助け

+0

あなたは、サーバー側からページをリロードし、ブラウザを強制することはできません。これはクライアント側でのみ可能です。 livereloadは、再ロードを実装するいくつかのJavaScriptを使用して、提供されたページにパッチを適用します。[https://github.com/lepture/python-livereload/blob/master/livereload/server.py#L222] – languitar

答えて

2

いただきありがとうございます。 HTTPサーバーとは、情報(HTML)を送信したことを意味し、クライアントは情報を処理します。それ以上のコミュニケーションはありません。そのためには、AJAXやWebSocketを実装する必要があります。両方のプロトコルは、頻繁な通信を可能にします。

通信できないため、最初に送信したコンテンツの更新を自動化する必要があります。この例では、ページを30秒ごとに更新するとします。これは、HTMLやJavaScriptのいずれかで行うことが可能です:

<meta http-equiv="refresh" content="30" /> 

または

setTimeout(function(){ 
    window.location.reload(1); 
}, 30000); 
+0

pythonでページを変更することは可能ですかこのコードを埋め込むには? – Kev1n91

関連する問題