-1
私のフラスコのアプリケーションでsocketioを使用すると、送信者とメッセージの名前を表示したいが、ここではメッセージのみが表示され、送信者の名前はブラウザに "[object object] hello" 。Python Flaskブロードキャストメッセージ
**# server.py
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config[ 'SECRET_KEY' ] = 'jsbcfsbfjefebw237u3gdbdc'
socketio = SocketIO(app)
@app.route('/')
def hello():
return render_template('./index.html')
def messageRecived():
print('message was received!!!')
@socketio.on('my event')
def handle_my_custom_event(json):
print('recived my event: ' + str(json))
socketio.emit('my response', json, callback=messageRecived)
if __name__ == '__main__':
socketio.run(app, debug = True)
index.htmlを
**
<form action="" method="POST">
<b>Type your message below <span class="glyphicon glyphicon-arrow-down"></span></b>
<div class="clearfix" style="margin-top: 5px;"></div>
<div id="username">My Name</div>
<div style="padding-top: 5px;"></div>
<input type="text" class="message form-control" placeholder="Messages">
<div style="padding-top: 5px;"></div>
<button type="submit" class="btn btn-success btn-block"><span class="glyphicon glyphicon-send"></span> Send</button>
</form>
</div>
</div>
**
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
<script>
var socket = io.connect('http://' + document.domain + ':' + location.port)
// broadcast a message
socket.on('connect', function() {
socket.emit('my event', {
data: 'User Connected'
})
var form = $('form').on('submit', function(e) {
e.preventDefault()
let username = $('#username').val()
let user_input = $('input.message').val()
socket.emit('my event', {
username : $("#username"),
message : user_input
})
// empty the input field
$('input.message').val('').focus()
})
})
socket.on('my response', function(msg) {
console.log(msg)
if(typeof msg.username !== 'undefined') {
$('h1').remove()
$('div.message_holder').append('<div class="msg_bbl"><b style="color: #000">'+msg.username+'</b> '+msg.message+'</div>')
}
})
</script>**
元の書式設定はひどいです。コードブロック*をコードブロック*としてフォーマットします。引用符ではありません。 – jonrsharpe