안녕하세요, 외부 파이썬 응용 프로그램 (django)에서 flask-socketIO로 방출하려하지만 불행히도 방출되지 않습니다.외부 프로세스 (Django)에서 방출하지 않는 Flask-socketio 인스턴스
다음과 같이 내 플라스크 소켓 응용 프로그램을 정의다음과 같이
app.register_blueprint(views)
socketio.init_app(app, message_queue='redis://127.0.0.1:6380')
내보기
은 다음과 같습니다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')
불행히도 외부 파이썬 프로세스에서 방출되지 않습니다.
내가 아닌 외부 파이썬 응용 프로그램 (장고)에서 작동 자바 스크립트를 사용하여 웹 페이지에서 방출을 테스트 한 :
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"})
내가 외부 파이썬 응용 프로그램 (장고)에서 방출 어떻게해야합니까? 외부 프로세스에서 방출되는 방식에 문제가 있습니까? 정보에 대한
나는 지시 사항을 준수 : https://flask-socketio.readthedocs.io/en/latest/#emitting-from-an-external-process
팁 주셔서 감사합니다. 정의 된'namespace'와 함께'socketIO-client'을 사용하면 저에게 효과적입니다 :) –