मैं पिरामिड और सॉकेट.ओओ फ्रेमवर्क का उपयोग करके एक सरल वेबसॉकेट एप्लिकेशन बनाने की कोशिश कर रहा हूं। सर्वर साइड कोड:पिरामिड और socket.io के साथ Websockets का उपयोग कैसे करें?
from pyramid.response import Response
from pyramid_socketio.io import SocketIOContext, socketio_manage
import gevent
def includeme(config):
'''
This method is called on the application startup.
'''
config.add_route('socket.io', 'socket.io/*remaining')
class ConnectIOContext(SocketIOContext):
# self.io is the Socket.IO socket
# self.request is the request
def msg_connect(self, msg):
print "Connect message received", msg
self.msg("connected", hello="world")
# Socket.IO implementation
@view_config(route_name="socket.io")
def socketio_service(request):
print "Socket.IO request running"
print request
retval = socketio_manage(ConnectIOContext(request))
return Response(retval)
क्लाइंट कोड:
<script>
var socket = null;
$(document).ready(function() {
socket = new io.Socket(null, null);
socket.on('connect', function() {
console.log("Connected");
socket.send({type: "connect", userid: 123});
});
socket.on('message', function(obj) {
console.log("Message received");
console.log("Message", JSON.stringify(obj));
if (obj.type == "some") {
console.log("do some");
}
});
socket.on('error', function(obj) {
console.log("Error", JSON.stringify(obj));
});
socket.on('disconnect', function() {
console.log("Disconnected");
});
console.log("Connecting...");
socket.connect();
});
</script>
मैं कनेक्शन के लिए वेब सॉकेट उपयोग करने के लिए इस कोड की आवश्यकता है, लेकिन यह एक्सएचआर-मतदान के लिए वापस गिर जाता है। मैं इसे कैसे ठीक कर सकता हूं?
अग्रिम धन्यवाद, इवान।
वास्तव में प्रश्न का उत्तर देने के लिए, io.Socket() कॉल के दूसरे पैरामीटर के रूप में पारित एक {ट्रांसपोर्ट: ["websocket"]} ऑब्जेक्ट होना चाहिए, जो क्लाइंट लाइब्रेरी के संस्करण 0.6 का उपयोग कर रहा है। यदि आप जेएस lib के संस्करण 0.7+ का उपयोग कर रहे हैं, तो यह सर्वर-साइड पर सेट नहीं है। आपको वेब-सॉकेट सक्षम वेब ब्राउजर का भी उपयोग करना होगा (क्रोम एक है जो मुझे पता है कि काम करता है)। – abourget
गीवेंट-सॉकेटियो विकास काफी मर चुका है, इस पर बहुत भरोसा नहीं है। –
रवि- इस ट्रेड में दोनों उत्तर gevent-socketio का उपयोग करते हुए उल्लेख करते हैं, आप इसके बजाय उपयोग करने की क्या सलाह देंगे? – Amoliski