我正在使用node.js,express和nowjs构建一个网站/应用程序。一旦用户登录我的网站,他们就可以使用箭头键(除了其他服务之外)移动精灵。第i个用户精灵的位置保留在服务器端。
user[i] = { x : 0; y : 0 }
将箭头按键发送到服务器以更新精灵位置。
E.g. user[5].x += 5.
我不希望两个用户共享相同的位置(“碰撞”)。因此,当服务器接收到按键时,服务器端函数会检查结果坐标是否等于“user”数组中的某些坐标,如果是,则忽略该移动。
问题:当两个用户选择在同一时间移动到坐标时,如何处理这种情况?如果我理解正确的话,服务器端函数会同时被调用,并且两个用户都会在相同的坐标上结束,因为在检查时,没有人有这样的坐标集吗?
或者,我是否安全,因为如果2个客户端同时调用服务器端函数(例如使用nowjs),则一个函数将在另一个函数之后处理?
答案 0 :(得分:3)
node.js是单线程的,“同时”没有任何反应。你总是会先走一步。
答案 1 :(得分:1)
node.js中的javascript代码在单个线程上执行,因此您应该是安全的。如果您使用异步库来计算单独线程上的冲突,那么您将面临风险,但听起来并非如此。