如何在 socketio 事件发生时提供 html 代码?
How to serve html code when socketio event happens?
如果发生任何 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")
有什么方法可以实现吗?还是不可能?!
这不是 SocketIO 的工作方式,您似乎在尝试使 SocketIO 适应 HTTP 的工作方式,所以也许您应该考虑 SocketIO 是否是您想要的。
从 SocketIO 事件返回 HTML 没有问题,但是您需要在接收 HTML 的客户端上添加一些 JavaScript 并将其插入正确的位置放置在页面中。
下面是一个事件返回的例子HTML:
@socketio.on('new_test_event', namespace='/notifications')
def raise_new_attack(data):
emit("my_notification", "THE HTML CODE GOES HERE")
然后在客户端你会得到这样的东西:
socket.on("my_notification", function(html_code) {
// use jQuery or similar to insert the html in the page
});
如果发生任何 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")
有什么方法可以实现吗?还是不可能?!
这不是 SocketIO 的工作方式,您似乎在尝试使 SocketIO 适应 HTTP 的工作方式,所以也许您应该考虑 SocketIO 是否是您想要的。
从 SocketIO 事件返回 HTML 没有问题,但是您需要在接收 HTML 的客户端上添加一些 JavaScript 并将其插入正确的位置放置在页面中。
下面是一个事件返回的例子HTML:
@socketio.on('new_test_event', namespace='/notifications')
def raise_new_attack(data):
emit("my_notification", "THE HTML CODE GOES HERE")
然后在客户端你会得到这样的东西:
socket.on("my_notification", function(html_code) {
// use jQuery or similar to insert the html in the page
});