【发布时间】:2015-12-04 04:59:25
【问题描述】:
我正在使用一些模块,除了 socket.io 并不总是有效的事实之外,一切都已就位......
我们已经在 Socket.io 中使用了一些“路线”,它们都运行良好并且每次都能正常运行!
但是现在,我们要推出一个新的
'order/new',应该显示每个新订单。
创建了一个新订单,通过队列发送一条消息,我们通过 GET 请求检索它,并使用 Socket.io 将其发送给用户。
但发射函数并不总是“发射”(?!)... 谁能帮我解决这个问题?
服务器:
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
}
});
如果需要更多信息,请在下面的 cmets 中说明 一切都是最新的(Node.js、React.js、Socket.io 等)
【问题讨论】:
标签: javascript node.js socket.io reactjs