如果发生任何SocketIO
事件,我正在尝试提供 HTML 代码,所以不要这样做:
$(document).ready(function(){
var notification_back = '/notifications';
var callback = 'http://' + document.domain + ':' + location.port + notification_back;
var socket = io.connect(callback);
socket.on('new_test_event', function(data){
var testList = $('#new_test_list');
testList.prepend(
'\
<li>\
<a href="'+data.url_to+'">\
<div class="user-new">\
<p>'+data.title+'</p>\
<span>'+moment(data.timestamp).fromNow()+'</span>\
</div>\
<div class="user-new-left">\
<i class="fa fa-rss"></i>\
</div>\
<div class="clearfix"> </div>\
</a>\
</li>\
'
)
console.log(data);
});
我更愿意从后端提供html代码,所以像这样:
@socketio.on('new_test_event', namespace='/notifications')
def raise_new_attack(data):
return Markup("THE HTML CODE GOES HERE")
有没有办法让这项工作?或者它不可能?!
答案 0 :(得分:1)
这不是SocketIO的工作原理,你似乎试图让SocketIO适应HTTP的工作方式,所以也许你应该考虑SocketIO是否是你想要的。
从SocketIO事件返回HTML没有任何问题,但您需要在接收HTML的客户端上添加一些JavaScript并将其插入页面中的正确位置。
以下是返回HTML的事件示例:
composer network ping -c alice@trade-network
然后在客户端你会得到这样的东西:
@socketio.on('new_test_event', namespace='/notifications')
def raise_new_attack(data):
emit("my_notification", "THE HTML CODE GOES HERE")