socket.emit не работает с колбой - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь сделать простое приложение чата с флягой в качестве проекта, поэтому у меня есть страница
когда пользователь создает новую комнату чата, она становится доступной всем другим пользователям
так что у меня есть этот код, но socket.emit не работает на нем
я имею в виду приложение колба не получает данные здесь код

document.addEventListener('DOMContentLoaded',function  () {

// Connect to websocket
var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port+'/channels');


// When connected, configure buttons
socket.on('connect', function () {



    document.querySelector("#create").onclick=function (){

        const new_channel=document.querySelector("#new_chanell").value;
        const channels_list=document.querySelector("#channels");
        for (let i=0; i<channels_list.length;i++){
            if(channels_list[i].value==new_chanell){

                document.querySelector("h1").innerHTML="this channel allready here";
                return false;}
        }
        socket.emit('add_channel', {'channel': new_channel});
        document.querySelector("h1").innerHTML="new channel";


        return false;

}});

и в колбе

@socketio.on("add_channel")
def add_channel(data):
raise("he")
channel=data["channel"]
channel_list.append(channel)
emit("new_one",{"channel":channel},broadcast=True)

поэтому я поставил рейз ("он"), чтобы узнать, получает ли приложение данные, но не
функция вообще не вызывается, почему

1 Ответ

0 голосов
/ 29 августа 2018

На URL соединения вы передаете пространство имен /channels. Если это предназначено, то на сервере вы должны добавить пространство имен во все ваши обработчики событий:

@socketio.on("add_channel", namespace='/channels')
def add_channel(data):
    # ...
...