0

我正在使用 node.js、express 和 nowjs 构建网站/应用程序。用户登录我的网站后,他们可以使用箭头键移动精灵(除了其他服务)。第 i 个用户的精灵的位置保持在服务器端。

user[i] = { x : 0; y : 0 } 

箭头按键被发送到服务器以更新精灵位置。

E.g. user[5].x += 5.

我不希望两个用户共享相同的位置(“冲突”)。因此,当服务器接收到按键时,服务器端函数会检查结果坐标是否等于“用户”数组中的某些坐标,如果是则忽略移动。

问题:当两个用户选择同时移动到坐标上时,我该如何处理?如果我理解正确,服务器端函数将同时被调用,并且两个用户最终将在相同的坐标上,因为在检查时,没有人拥有那组坐标吗?

或者,我是否安全,因为如果 2 个客户端同时调用一个服务器端函数(例如使用 nowjs),一个函数总是会一个接一个地被处理?

4

2 回答 2

3

node.js 是单线程的,“同时”没有任何事情发生。您将永远先有一步。

于 2012-05-26T20:31:06.417 回答
1

node.js 中的 javascript 代码在单个线程上执行,因此您应该是安全的。如果您使用异步库来计算单独线程上的冲突,那么您将处于危险之中,但听起来并没有发生这种情况。

于 2012-05-26T20:31:22.217 回答