Nick Shek's Blog

TypeError: deepestAncestor is undefined

使用react.js遇到一個奇怪的問題 : TypeError: deepestAncestor is undefined

但是當按F5問題又消失了,去其他頁面有時會有這個問題。

根據 http://stackoverflow.com/questions/27153166/typeerror-when-using-react-cannot-read-property-firstchild-of-undefined

可能係turbolink關係,載入了二個不同版本的react。

我的暫時解決方法是在rails內的application.js暫時不用turbolink。將

//= require turbolinks
//= require react
//= require react_ujs

變為

//= require react
//= require react_ujs

redis在socket.io接收多次重覆信息問題

在網上看到一個範例,展示了redis 如何配合socket.io進行互動的source code :

io.on('connection', function(socket){
  redis.on('message', function(channel, message){
    socket.emit(channel, JSON.parse(message));
  });
});

這段程式碼有一個問題,就是會因為client的數目增加而令redis接收message的handler觸發多次,因此向每一個socket.io client 傳送了多次重覆的信息。解決方法是將redis的程式碼移出io.on('connection', function(socket){ .. }); :

redis.on('message', function(channel, message){
  //socket.emit改為io.sockets.emit ,信息傳送給所有人
  io.sockets.emit(channel, JSON.parse(message));
});

io.on('connection', function(socket){
//當有新的connection要處理的程式碼
});