प्रश्न: क्या this link में उदाहरण के लिए एक तुलनीय समाधान, सिवाय होगा gevent-socketio और Socket.io.jsbottle के साथ प्रयोग कर लागू किया? मैं न्यूनतम समाधान की तलाश में हूं जो क्लाइंट से सर्वर पर एक लूप में कुछ ट्रैफिक पास करेगा और गीवेंट-सॉकेटियो, सॉकेट.ओ.जे.एस. और बोतल का उपयोग कर क्लाइंट पर वापस जाएगा।पायथन के बोतल gevent-socketio और Socket.IO.js का उपयोग कर microframework के न्यूनतम उदाहरण
पृष्ठभूमि: मैंने एक साधारण वेब-ऐप विकसित किया है जो सर्वर पर रिमोट कस्टम शैल (क्ली) के लिए वेब-आधारित टर्मिनल प्रदान करता है। ब्राउज़र (क्लाइंट) एक फॉर्म इनपुट फ़ील्ड से शेल कमांड एकत्र करता है, gevent.pywsgi.WSGIServer
पर हैंडलर के माध्यम से अनुरोधों को संभालने के लिए वेब-सॉकेट पर कमांड पास करता है, जो शेल को कमांड प्रदान करता है, जबकि सॉकेट के माध्यम से आउटपुट को अतुल्यकालिक रूप से लौटाता है क्लाइंट के ब्राउज़र में एक फॉर्म में textarea फ़ील्ड।
http://bottlepy.org/docs/dev/async.html#finally-websockets
यहाँ अतिरेक के लिए उपलब्ध कराई गई:
example_server.py:
from bottle import request, Bottle, abort
app = Bottle()
@app.route('/websocket')
def handle_websocket():
wsock = request.environ.get('wsgi.websocket')
if not wsock:
abort(400, 'Expected WebSocket request.')
while True:
try:
message = wsock.receive()
wsock.send("Your message was: %r" % message)
except WebSocketError:
break
from gevent.pywsgi import WSGIServer
from geventwebsocket import WebSocketHandler, WebSocketError
server = WSGIServer(("0.0.0.0", 8080), app,
handler_class=WebSocketHandler)
server.serve_forever()
client.html यह बोतल टीम द्वारा प्रदान की एक महान, छोटा उदाहरण पर आधारित है:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var ws = new WebSocket("ws://example.com:8080/websocket");
ws.onopen = function() {
ws.send("Hello, world");
};
ws.onmessage = function (evt) {
alert(evt.data);
};
</script>
</head>
</html>
प्रेरणा: मेरा मौजूदा ऐप फ़ायरफ़ॉक्स और क्रोम के नवीनतम संस्करण में बहुत अच्छा काम करता है। आईई समर्थन मौजूद नहीं है, और सफारी संगतता मिडलिन 'है। मैं आखिरकार क्लाइंट और सर्वर के बीच खोल कमांड और आउटपुट संवाद करने के लिए एक क्रॉस-ब्राउजर समाधान ढूंढ रहा हूं। अगर मेरे पास बोतल के लिए एक साधारण उदाहरण था, तो मुझे लगता है कि मैं और अधिक तेज़ी से आगे बढ़ सकता हूं।
संयोग से, मैंने gevent-socketio examples और यहां तक कि a bottle example देखा, लेकिन इन सभी उदाहरणों में आवेदन में छलांग लगाने के लिए उपरोक्त सरल उदाहरण से बहुत अलग हैं। (Gevent-socketio उदाहरण बोतल ऐप्स की तरह कुछ भी नहीं दिखते हैं, जो मैं परिचित हूं। और, बोतल उदाहरण वास्तव में क्लाइंट के साथ संवाद करने के लिए नहीं दिखाता है।)
धन्यवाद! :)
प्रदान की अब टूट रहे हैं लिंक। फाइलें यहां पाई जा सकती हैं: https://github.com/mozilla-services/circus-web/blob/c850fcf453dd53680885833f3e0944577e90385b/circusweb/circushttpd.py https: // github।com/mozilla-सेवाओं/circusweb/ब्लॉब/c850fcf453dd53680885833f3e0944577e90385b/circusweb/server.py – freakTheMighty