很抱歉,如果我的问题已经存在,但我在互联网上搜索了很多内容,却没有找到解决方案。 实际上,我已经尝试了一些问题解决方案,它们看起来与我的解决方案相似,但我只是变得更加困惑:/
因此,我尝试在python中构建服务器以与Node.js客户端进行通信。 我发现python-socketIO可以做到这一点,这似乎是一个不错的解决方案,但不幸的是,我不明白为什么要从服务器发送到nodejs客户端。 实际上,当我将客户端连接到服务器时,客户端连接没有问题,我可以将消息从客户端(nodejs)发送到服务器(python),服务器收据正确。但是,当我从服务器端使用emit()方法回答时,它的工作方式很奇怪。 就像客户收据一样,我有时会发出有时不是的消息... 我不明白为什么 因为如果我在服务器端发出错误消息,为什么有时可以正常工作?
我尝试使用不同的解决方案“ python-socketio”或“ flask-socket-io”,但这是完全相同的问题。 此外,我看到一些人在互联网上使用它的工作更好Redis的时候,但我不知道正确认识Redis的,当我试图做的比我所看到的它仍然没有工作一样:/
那么,有人可以帮助我吗?
我将服务器和客户端(Python / nodejs)放在这里
服务器
rom flask import Flask, render_template
from flask_socketio import SocketIO
from flask_socketio import send, emit
import json
#import eventlet
#import redis
#eventlet.monkey_patch()
#from status.status import Status
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
#status = Status()
@socketio.on('connect')
def test_connect():
emit('my response', {'data': 'Connected'})
@socketio.on('disconnect')
def test_disconnect():
print('Client disconnected')
def ack():
print("callback was receipt")
pass
@socketio.on('transaction')
def test_transaction(data):
data = json.loads(data)
print("message from transaction\n")
print("market id : {} ".format(data['market_id']))
print("user id : " + data['user_id'] + " ")
print("total price : " + data['total_price'] + " ")
emit('succeed', "OK", callback=ack)
pass
if __name__ == '__main__':
socketio.run(app, port=8080)
客户
//client.js
var io = require('socket.io-client');
var json = require('json');
var socket = io.connect('http://localhost:8080', {reconnect: true});
socket.on('succeed', function(message, back) {
console.log(message);
console.log('succeed');
back();
});
socket.on('rejected', function(message) {
console.log(message);
console.log('rejected');
});
// Add a connect listener
socket.on('connect', function () {
var arr = [22334421, 47631470, 12342378, 72430096];
var ans = {"market_id":"12", "user_id":"1", "total_price":"200", "items": arr};
console.log('Connected!');
socket.emit("transaction", JSON.stringify(ans));
});
与烧瓶这一个吧,IY你想看到我所做的与Python-socketio不要犹豫,问,我也可以共享,但是这是同样的问题...
也许尝试在笔记本电脑上了解它为什么很奇怪?
我知道它不能正常工作,因为回调函数“ ack”被一次调用十次。并且“成功”之类的消息也会完全随机出现。 所以我不知道发射会发生什么。
如果有人可以提供帮助,请给我一些解释,我将非常高兴!
谢谢