Flask套接字(服务器端)未与客户端(Javascript)连接

时间:2020-09-24 15:32:04

标签: sockets flask websocket socket.io flask-socketio

File-Strucure

客户端未与服务器端连接。

服务器端代码:

from flask import Blueprint, render_template
from hook.routes.auth import login_required
# from flask_socketio import emit, join_room, leave_room
from .. import socketio

chat = Blueprint('chat', __name__)

@chat.route('/')
@login_required
def index():
    """ chat page if user is logged in """
    return render_template('main/chat.html')


@socketio.on('connecting', namespace='/chat')
def connected(data):
    print("""

        connecting server-side...
        
        """)
    print(data)

客户端代码console.log(“已连接Javascript(聊天脚本)”。)

document.addEventListener('DOMContentLoaded', () => {
    // Connect to Websocket
    var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + '/chat');
    console.log("Starting sockets! " + location.protocol + '//' + document.domain + ':' + location.port + '/chat')
    // When connected
    socket.on('connect', () => {
        console.log("Connecting script...");
        socket.emit('connecting', {'data': 'I\'m connected!'});
    })
});

没有错误,但是服务器端没有从客户端接收数据。

1 个答案:

答案 0 :(得分:0)

将事件的名称更改为其他名称将使代码起作用。 我将事件名称“ connecting”更改为其他名称(“ connected”),甚至尝试 也就是说。仍然有效。

客户端代码:

console.log("Javascript (chat-script) connected.")

document.addEventListener('DOMContentLoaded', () => {
    // Connect to Websocket
    var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + '/chat');

    // When connected
    socket.on('connect', () => {
        console.log("Connecting script...");
        socket.emit('connected', {'data': 'I\'m connected!'});
    });
});

服务器端代码:

from flask import Blueprint, render_template
from hook.routes.auth import login_required
# from flask_socketio import emit, join_room, leave_room
from .. import socketio

chat = Blueprint('chat', __name__)

@chat.route('/')
@login_required
def index():
    """ chat page if user is logged in """
    return render_template('main/chat.html')


@socketio.on('connected', namespace='/chat')
def connected(data):
    print("""
        connecting server-side...
        """)
    print(data['data'])

现在,它可以正常工作了。

相关问题