forked from intcatch2020/marlin-raspberry
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.py
65 lines (50 loc) · 1.29 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import eventlet
import socketio
import time
from threading import Thread
sio = socketio.Server()
app = socketio.WSGIApp(sio)
boat = None
@sio.event
def connect(sid, environ):
print('connect', sid)
@sio.event
def disconnect(sid):
print('disconnect ', sid)
if sid == boat:
boat == None
@sio.event
def register_boat(sid):
print('register_boat')
global boat
boat = sid
print(boat)
@sio.on('state')
def on_state(sid, data):
print('state recived')
sio.emit('state', data, skip_sid=sid)
@sio.event
def start_autonomy(sid, data):
print('start autonomy', data)
send_to_boat('start_autonomy', data, sid)
@sio.event
def stop_autonomy(sid):
print('stop autonomy')
send_to_boat('stop_autonomy', sid=sid)
@sio.event
def set_speed(sid, data):
print('set_speed', data)
send_to_boat('set_speed', data, sid)
def send_to_boat(event, data=None, sid=None):
if boat is not None:
if data is not None:
sio.emit(event, data, room=boat)
else:
print('is None')
sio.emit(event, room=boat)
print('sent to boat')
else:
sio.emit('error','boat not connected', room=sid)
print('boat not connected')
if __name__ == '__main__':
eventlet.wsgi.server(eventlet.listen(('', 4000)), app)