直截了当,我已经得到了这段代码:
//SERVERSIDE
newSocket.on("connectOrb", function(connectingOrbId, targetOrbId)
{
if(Number.isInteger(connectingOrbId) && (Number.isInteger(targetOrbId)))
{
//FURTHER VALIDATION...
}
}
//CLIENTSIDE
socket.emit("connectOrb", parseInt(selectedOrbElement.attr("cid")), parseInt(clickedOrbElement.attr("cid")));
当我检查connectingOrbId
和targetOrbId
是否是localhost上的整数时,一切正常,两个条件都返回true并且算法继续,但是当我在OpenShift上托管这个应用程序并尝试完全相同时事情,然后我无法通过此验证,可能是什么问题?
顺便说一下,当我console.log(connectingOrbId)
和console.log(targetOrbId)
时,我会得到我应该得到的数字(所以它不是undefined
)。
编辑:
所以我稍微调整了服务器端代码,但我仍然得到相同的结果:
newSocket.on("connectOrb", function(connectingOrbId, targetOrbId)
{
connectingOrbId = parseInt(connectingOrbId);
targetOrbId = parseInt(targetOrbId);
if(Number.isInteger(connectingOrbId) && (Number.isInteger(targetOrbId)))
{
//FURTHER VALIDATION...
}
}
EDIT2:
由于Rafael问我已经检查了这些变量的类型,所以现在代码看起来像这样:
newSocket.on("connectOrb", function(connectingOrbId, targetOrbId)
{
connectingOrbId = parseInt(connectingOrbId);
targetOrbId = parseInt(targetOrbId);
console.log("Connecting: "+typeof connectingOrbId);
console.log("Target: "+typeof targetOrbId);
if(Number.isInteger(connectingOrbId) && (Number.isInteger(targetOrbId)))
{
//FURTHER VALIDATION...
}
}
并且控制台批准这两个都是数字类型变量。
编辑3:
因此,迈克帮我发现我在OpenShift上有一个旧的node.js版本,在本地有一个新版本,更新旧版本解决了这个问题。