我使用socket.io(烧瓶)
my frotend js:
$(document).ready(function(){
namespace = '/test';
var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);
socket.on('connect', function() {
socket.emit('my event', {data: 'I\'m connected!'});
$('#status').append('connected');
});
function eye_pos() {
socket.emit('eye', function (msg) {
var tit = $('#tit')[0];
console.log(msg);
tit.style.display = 'block';
tit.style.left = (msg['x']) + 'px';
tit.style.top = (msg['y']) + 'px';
});
}
while ($('#status').text() === 'connected'){
eye_pos();
}
我的后端python:
@socketio.on('connect', namespace='/test')
def test_connect():
print('socet_connected')
global tracker
tracker = EyeTribe()
tracker.connect()
tracker.pushmode()
@socketio.on('eye', namespace='/test')
def test_message():
n = tracker.next()
x = str(n.raw).split(';')
y = x[0] if int(x[1]) >= 0 else x[1]*(-1)
x = x[1] if int(x[0]) >= 0 else x[0]*(-1)
print('feye', x, y)
return {'x': x, 'y': y}
如果这个代码不在循环中(在js中)但在将它插入循环(如上所述)后,python代码会自行循环并发送无法访问js的数据(有没有console.log事件甚至),关闭站点不会停止python循环。 使用setInterval减慢循环也不起作用。