こんにちは、外部のPythonアプリケーション(django)からflask-socketIOに送信しようとしていますが、残念ながらそれは発光しません。Flask-socketioのインスタンスが外部プロセス(Django)から送信されない
次のように私は私のフラスコソケットアプリが定義されている次のように
app.register_blueprint(views)
socketio.init_app(app, message_queue='redis://127.0.0.1:6380')
私の見解は以下のとおりです。外部のPythonアプリケーション(ジャンゴ)からのメッセージキューに発光
from flask import render_template
from .. import socketio
from App import socketio
from App.views import views
from flask_socketio import join_room, leave_room, emit
import cgi
def ack():
print("cron_failedMsg was delivered")
@socketio.on('connect', namespace='/node/cron')
def ws_conn():
print("Connected")
@socketio.on('join', namespace='/node/cron')
def on_join(data):
print("Joined room " + data['room'])
join_room("room_" + data['room'])
emit('msg', {'msg': "joined room room_" +
data['room']}, room="room_" + data['room'])
@socketio.on('leave', namespace='/node/cron')
def on_leave(data):
print("leaved")
leave_room("room_" + data['room'])
@socketio.on('cron_failed', namespace='/node/cron')
def ws_cron_failed(message):
print("Failed")
print("sending to room " + message['room'])
"""
socketio.emit('cron_failed', {
'cron_failed': cgi.escape(message['cron_failed'])}, namespace='/node/cron')
"""
emit('cron_failedMsg', {
'cron_failed': cgi.escape(message['cron_failed'])}, room="room_" + cgi.escape(message['room']))
アム:
from flask_socketio import SocketIO
socketio = SocketIO(message_queue='redis://' +
redis6380_conf.redis6380['host'] + ":" + redis6380_conf.redis6380['port'])
socketio.emit(
'cron_' + status, {'cron' + status: redisConnection6381.get(str(userID) + '_' + status), 'room': str(userID)}, namespace='/node/cron')
残念ながら、外部のPythonプロセスから放出されません。
私はそれが動作するJavaScriptを使用してWebページからではなく、外部のPythonアプリケーション(ジャンゴ)からの発光をテストしてみた:
var url = "http://" + document.domain + ":" + location.port;
var socket = io.connect(url + "/node/cron");
socket.emit('join',{room:""+$rootScope.Data.ID});
socket.emit('cron_failed',{cron_failed:"ddd",room:"3"})
私は外部のPythonアプリケーション(ジャンゴ)から放出する方法を教えてください。外部プロセスから放出される方法に問題はありますか?詳細については
私は指示に従った:https://flask-socketio.readthedocs.io/en/latest/#emitting-from-an-external-process
ありがとうございます。定義された 'namespace'が' socketIO-client'を使って私のために働いた:) –