Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
А на счет Ctr+U сделайте мне эту комбинацию на серверном питоновом скрипте этой демкиНа питоновский код если честно не смотрел, там заточено для app engine, используется база гугла и тд. В том коде что я привел используется ajax, mongodb, две простеньких функции. Конечно у меня нет проверок исключительных ситуаций ошибок и всего остального, но это ж не продакшен, это простой пример.
pip install jinja2
pip install bottle
from bottle import run, route, request, jinja2_template as templ
def connect():
mongo = Connection('localhost', 27017)
db = mongo['db']
db.authenticate('user', 'pass')
return db
db = connect()
@route('/chat/<room>')
def chat(room):
doc = db.chat.find_one({'_id':room})
initiator = 1
if not doc:
initiator = 0
doc = {'_id':room, 'mess': []}
db.chat.save(doc)
return templ('rtc.tpl', initiator = initiator, room=room)
@route('/chat', method='POST')
def chat_post():
lst = 0.0; msg = []
room = get_post('room')
user_id= get_post('user_id')
last= float(get_post('last', 0))
mess= get_post('mess')
doc = db.chat.find_one({'_id':room})
if mess:
doc['mess'].append((time.time(), mess, user_id))
db.chat.save(doc)
for i_time, i_msg, i_user in doc['mess']:
if i_user != user_id and i_time > last:
lst = i_time
msg.append((i_time, i_user, i_msg))
if not lst: lst = last
return json.dumps({'result': 'ok', 'last': lst, 'msg': msg})
def get_post(name, default = None):
return request.POST[name] if name in request.POST else default
run(host='localhost', port=8080)
Webrtc, Peer Connection — создание полноценного видео чата в браузере