我想从socket.io客户端获取Flask服务器中的数据。我的设置是:
我的烧瓶服务器中有以下方法:
$(document).ready(function (){
//some code ....
var listTable = $('#listTable').DataTable({
'fnCreatedRow': function (nRow, aData, iDataIndex) {
$(nRow).attr('id', 'my' + iDataIndex);
$(nRow).attr('name', 'my' + iDataIndex); // or whatever you choose to set as the id
},
"tableTools": {
"sSwfPath": "http://cdn.datatables.net/tabletools/2.2.2/swf/copy_csv_xls_pdf.swf",
"aButtons": [
{
"sExtends": "copy",
"sButtonText": "Copy To ClipBoard",
},
{
"sExtends": "xls",
"sFileName": "*.xls",
"sButtonText": "Download XLS",
},
{
"sExtends": "print",
}
]
},
"bInfo": false,
"sEmptyTable": "There are no records",
"processing": true,
"oLanguage": {
"sProcessing": "<img src='${request.contextPath}/images/ajax-loader.gif'>"
},
"dom": '<"toolbar">T<"clear">lfrtip',
"order": [[ 1, "desc" ]]
});
$('.dataTables_empty').html("");
//some more code
//some url
listTable.ajax.url(url).load()
});
在应该接收数据的客户端上:
<div id="data_table_travelHistory" style="margin:0 auto; padding-top:10px; width:90%;">
<table cellpadding="0" cellspacing="0" border="0" id="listTable" style="width:100%;" class="table table-striped table-bordered">
<thead class="alignCenter">
<tr>
<th class="headerclass">Start Date</th>
<th class="headerclass">Approval Status</th>
<th class="headerclass">Created On</th>
<th class="headerclass">Action</th>
</tr>
</thead>
<tbody></tbody>
<tfoot class="alignCenter headerclass">
<tr>
<th class="headerclass">Start Date</th>
<th class="headerclass">Approval Status</th>
<th class="headerclass">Created On</th>
<th class="headerclass">Action</th>
</tr>
</tfoot>
</table>
</div>
但我似乎无法建立与client2的连接。我在这做错了什么?
答案 0 :(得分:0)
当您在未明确指示收件人的情况下调用emit
函数时,该事件将被发送回调用者,在您的示例中,调用者是将client1
事件发送到服务器的客户端。 / p>
如果要发送到其他客户端,则需要知道其会话ID(或sid
)。在任何处理程序中,您都可以使用request.sid
来获取发件人的会话ID。例如,您可以编写一个连接处理程序来记录附加到应用程序特定数据的会话ID,然后当您想要将内容发送到特定客户端时,执行以下操作:
emit('client2', {'data': 'testdata'}, room=get_sid_for_user(username))
此处room
参数指定将消息发送到哪个房间。所有用户都有一个以会话ID命名的默认会议室。