0
我用几个模块的工作,一切都就地除外socket.io并不总是工作的事实...Socket.io并不总是工作
我们已经有了一些“路线”我们已经在Socket.io中使用了,它们都很棒,每次都能工作!
但现在,我们正在推出一个新的
'order/new',它应该显示每一个新订单包含的内容。
创建了一个新的订单get,通过队列发送消息,我们通过GET请求进行检索,并使用Socket.io将其发送给用户。
但是emit函数并不总是'emit'(?!)... 任何人都可以帮助我吗?
服务器:
io.on('connection', function (socket) {
// somewhere else calls this function, nothing wrong here...
function (mes) {
console.log('New order received: ', mes);
var doc_id = JSON.parse(mes)._id;
request
.get(urls['order/get'].replace(':id', doc_id))
.end(function (err, res) {
console.log(err);
if (res.ok) {
console.log(chalk.green('OK: [GET] - ORDER/GET - ORDER_ID: ' + doc_id));
// The above console.log get's called, so still working...
socket.emit('order/new', res.body);
// THIS socket.emit is called randomly, it doesn't work everytime...
} else {
console.log(chalk.red('ERROR: [GET] - ORDER/GET - ' + res.text))
}
});
}
阵线(反应):
var OrdersViewer = React.createClass({
setNewOrder (order) {
console.log("new order gotten nr.", this.state.orders.length);
// this doesn't always get called...
var orders = _.cloneDeep(this.state.orders);
orders.push(order);
this.setState({orders});
},
componentDidMount() {
socket.on('order/new', this.setNewOrder)
},
render() {
// renders stuff
}
});
如果需要任何更多的信息,请在下面 一切是最新的评论这样说(Node.js的, React.js,Socket.io等)
没有问题,那有效;) – CreasolDev