फ्लास्क और जावास्क्रिप्ट के बीच कनेक्शन स्थापित होने के बाद मैं जावास्क्रिप्ट से प्रतिक्रिया प्राप्त करने का प्रयास कर रहा हूं। ऑनकनेक्ट() फ़ंक्शन ठीक से काम कर रहा है लेकिन ऑनमेसेज() नहीं है।

मैंने जावास्क्रिप्ट में भी उत्सर्जन विधि के साथ प्रसारण की कोशिश की लेकिन यह काम नहीं कर रहा है।

यह मेरा ऐप है.py

app=Flask(__name__)
bootstrap=Bootstrap(app)
socketio=SocketIO(app)

app.config['SECRET_KEY']="MY_KEY"

@app.route('/')
def login():
    return render_template('index.html')

@app.route('/home',methods=['GET','POST'])
def home():
    if(request.method=='POST'):
        data=request.form
        name=data['name']
        return render_template('message.html',name=name)
    else:
        return render_template('index.html')

@socketio.on('connect')
def onconnect():
    print("connect")

@socketio.on('message')
def onmessage(message):
    print('message')

if(__name__=='__main__'):
    socketio.run(app)

और यह मेरी जावास्क्रिप्ट फ़ाइल है

const ws =io.connect(window.location.href)

ws.on('connect', function() {
  console.log("Connection estalished")
  ws.emit("adsd",broadcast=true)
});

संपादित करें: जावास्क्रिप्ट में एक गलती है।

const ws =io()

इसका उपयोग कनेक्शन स्थापित करने के लिए किया जाना चाहिए, न कि पिछली विधि के लिए।

मेरा प्रोजेक्ट पूरा हो गया है। गीथब परियोजना के लिए लिंक

0
Prabhat Kumar 6 सितंबर 2019, 14:34

1 उत्तर

सबसे बढ़िया उत्तर

सबसे पहले, केवल सर्वर ही प्रसारित कर सकता है, क्लाइंट केवल सर्वर को उत्सर्जित कर सकता है।

दूसरा, आप adsd नामक एक ईवेंट उत्सर्जित कर रहे हैं, इसलिए आपको अपने सर्वर में उस ईवेंट के लिए एक हैंडलर जोड़ने की आवश्यकता है। उदाहरण के लिए:

@socketio.on('adsd')
def adsd_handler():
    print('got adsd!')
1
Miguel 6 सितंबर 2019, 18:00