invisibleroads / invisibleroads/socketIO-client

Cant connect stably to FlaskSocketIO sever

Open
#201 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
441
Forks
204
PR merge metrics
No merged PRs in 30d

Description

Hi All !
Im using Flask and Flask SocketIO to make sever . it run well when i using JS client, but when im using socketIO_client (python) to connect to sever , it cant connect to sever ! . please check this code help me ! Thanks .

my sever have ip :104.131.98.89
sever:
`
from flask import Flask, request, jsonify, render_template, session, redirect, escape
from werkzeug.utils import secure_filename
from datetime import datetime
import os
import sqlite3
from flask_socketio import SocketIO, emit
import json
import threading
DATABASE_FILE = 'database.db'
app = Flask(__name__, static_url_path='/static')
app.secret_key = os.urandom(12)
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
app.config['UPLOAD_FOLDER'] = './static/image'
socketio = SocketIO(app, async_mode=None)
def connectdb():
conn = sqlite3.connect(DATABASE_FILE, isolation_level = None)
return conn
def querydb(conn, query, v = tuple()):
c = conn.cursor()
c.execute(query, v)
return c.fetchall()

def logged_in():
if not session.get('logged_in'):
return 0
return 1

@app.route('/')
def index():
if logged_in():
return render_template('index.html')
else:
return redirect('/dang_nhap')
@app.route('/dang_nhap', methods=['GET', 'POST'])
def dang_nhap():
if request.method == 'GET':
return render_template('dang_nhap.html')
else:
username = request.form.get('username')
password = request.form.get('password')
conn = connectdb()
r = querydb(conn, r"SELECT * FROM Administrator WHERE username=? AND password=?", (username, password))
if r:
session['logged_in'] = True
return redirect('/')
else:
return render_template('dang_nhap.html')
@app.route('/static/')
def static_file(filename):
return app.send_static_file(filename)

@app.route('/json/scan_the', methods=['POST'])
def scan_the():
json_post_data = request.get_json()
CardID = json_post_data['CardID']
DeviceID = json_post_data['DeviceID']
FingerID = json_post_data['FingerID']
ImageID = json_post_data['ImageID']
EntryTime = json_post_data['EntryTime']
conn = connectdb()
r = querydb(conn, r"SELECT * FROM Employee WHERE CardID=?", (CardID, ))
if len(r) > 0:
respone = {'status': 1}
querydb(conn, r"INSERT INTO Work(DeviceID,CardID,FingerID,ImageID,EntryTime) VALUES (?,?,?,?,?)", (DeviceID,CardID,FingerID,ImageID,EntryTime, ))
name_string = querydb(conn, r"SELECT EmployeeName FROM Employee WHERE CardID=?",(CardID,))

post_web_data = json.dumps({"NameEmploy": name_string,"EntryTime": EntryTime,"ImageID": ImageID})
print 'post_web_data:', post_web_data
socketio.emit('my_response', post_web_data , namespace='/tracking')
else:
respone = {'status': 0}
try:
querydb(conn, r"INSERT INTO UnRegistered(CardID) VALUES (?)", (CardID, ))
except:
pass
conn.commit()
conn.close()
return jsonify(respone)

@app.route('/Tracking', methods=['POST', 'GET'])
def tracking():
return render_template('Tracking.html')
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/rev_image', methods=['POST', 'GET'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
post_web_data = json.dumps({"Image_status":"true"})
socketio.emit('image_response', post_web_data , namespace='/tracking')
return 'Success'
return 'Success'

@app.route('/them_nhan_vien', methods=['POST', 'GET'])
def them_nhan_vien():
if not logged_in():
return redirect('/dang_nhap')

if request.method == 'GET':
return render_template('them_nhan_vien.html')
else:
post_data = request.form
CardID = post_data['mathe']
EmployeeName = escape(post_data['hoten'])
EmployeeBirthDate = datetime.strptime(post_data['ngaysinh'], '%d-%m-%Y')
print(post_data)
conn = connectdb()
r = querydb(conn, r"INSERT INTO Employee(EmployeeName, CardID, EmployeeBirthDate) VALUES(?,?,?)", (EmployeeName, CardID, EmployeeBirthDate))
return render_template('them_nhan_vien.html')

@app.route('/json/xoa_nhan_vien', methods=['POST'])
def xoa_nhan_vien():
if not logged_in():
return redirect('/dang_nhap')

json_post_data = request.get_json()
CardID = json_post_data['mathe']
conn = connectdb()
r = querydb(conn, r"DELETE FROM Employee WHERE CardID=?", (CardID,))
return jsonify({'status': 1})

@app.route('/json/sua_thong_tin_nhan_vien', methods=['POST'])
def sua_thong_tin_nhan_vien():
if not logged_in():
return redirect('/dang_nhap')

json_post_data = request.get_json()
CardID = json_post_data['mathe']
EmployeeName = escape(json_post_data['hoten'])
EmployeeBirthDate = datetime.strptime(json_post_data['ngaysinh'], '%d-%m-%Y')
conn = connectdb()
r = querydb(conn, r"UPDATE Employee SET EmployeeName=?,EmployeeBirthDate=? WHERE CardID=?", (EmployeeName, EmployeeBirthDate, CardID))
return jsonify({'status': 1})

@app.route('/them_thiet_bi', methods=['POST', 'GET'])
def them_thiet_bi():
if not logged_in():
return redirect('/dang_nhap')

if request.method == 'GET':
return render_template('them_thiet_bi.html')
else:
post_data = request.form
DeviceID = post_data['deviceid']
description = escape(post_data['description'])
conn = connectdb()
r = querydb(conn, r"INSERT INTO Device(DeviceID, Description) VALUES(?,?)", (DeviceID, description))
return render_template('them_thiet_bi.html')
@socketio.on('Ping')
def handle_ping():
print('Ping !!!')
`

In client :
`
from socketIO_client import SocketIO, LoggingNamespace
import time
socket = SocketIO('http://104.131.98.89',5000,LoggingNamespace)
socket.emit('Ping')
`

it Sometimes connect , but it sometimes dont connect, it stuck in this pic and it sometimes have nothing.

![image](https://user-images.githubusercontent.com/22383911/48544819-08fa7d00-e8f7-11e8-98c2-f8606cdbca43.png)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.