我有一个socetio连接,可以在单击按钮时提供搜索:
$(document).ready(function () {
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('connect', function () {
socket.emit('seatch event', {
data: 'App Started'
})
var form = $('form').on('submit', function (e) {
let search_query = $('#search_text').val()
socket.emit('search event', {
search_query: encodeURIComponent(search_query)
})
})
});
socket.on('search_results_event', function (msg) {
//do someting
});
现在,我想添加另一个事件,就我而言,每次列表中的<li>
元素变为activate
时,我都想向服务器发送数据并获取答案。
如何添加此活动?我必须添加另一个connection
?
有什么建议吗?
答案 0 :(得分:2)
您不需要其他连接。连接套接字后,您就可以使用socket.on
了,因为您已经必须捕获从服务器发出的事件,而emit例如socket.emit('[event_name], [data_object])
将数据发送到服务器。
在Javacript端,您会发出这样的声音
socket.emit('my_event', {'message': 'hello world'})
您可以在flask
端通过
@socketio.on('my_event')
def handle_my_event(data):
print('Received an instance of my_event')
# will print {'message': 'hello world'}
print(data)
类似地,您可以从flask
服务器发出事件,例如您的search_results_event
通过
from flask_socketio import emit
emit('search_results_event', {'key': 'value'})
问题中您现有的socket.on
将处理哪些问题。 emit
的第二个参数是您要发送的数据-通常是json。
有关更多信息,请参见the docs。