Я пытаюсь установить связь между приложением node.js и python с помощью socket.io с библиотекой socketIO-client 0.5.1 на стороне python. Ниже приведены два кода куски:socketIO-client - RuntimeError: превышена максимальная глубина рекурсии
var http = require('http').createServer();
http.listen(6000);
var io = require('socket.io').listen(http, { log: false });
var events = require('events');
var eventEmitter = new events.EventEmitter();
var counter = 0;
io.sockets.on('connection', function (socket) {
eventEmitter.on('observe', function(message){
socket.emit('sendVoltage', {});
});
socket.on('voltage', function (data) {
console.log(counter + " - " + data.voltage);
if (counter++ < 500) {
eventEmitter.emit('observe', '');
}
});
eventEmitter.emit('observe', '');
});
#!/usr/bin/python
import time, signal, sys
from Adafruit_ADS1x15 import ADS1x15
from socketIO_client import SocketIO
ADS1115 = 0x01 # 16-bit ADC
adc = ADS1x15(ic=ADS1115)
socketIO = SocketIO('chair01', 6000)
def on_voltage_response(*args):
print 'on_voltage_response', args
def on_sendVoltage(*args):
voltage = adc.readADCSingleEnded(0, 4096, 250)/1000
print "Emitting voltage"
socketIO.emit('voltage', {'voltage': voltage}, on_voltage_response)
socketIO.wait_for_callbacks(seconds=1)
print "Voltage emitted"
socketIO.on('sendVoltage', on_sendVoltage)
socketIO.wait(seconds=1)
При обнаружении sendVoltage
сообщение функция on_sendVoltage
выполняется, то сообщение напряжения испускается, но контроль никогда не возвращается из Emit. Появляется следующее сообщение, а следующее и т. Д. Никогда не возвращается. В какой-то момент он умирает со слишком большим количеством рекурсивных вызовов.
Что я делаю неправильно?