小编Chr*_*ans的帖子

socket建立后的socket.io认证

我正在做一个小型多人游戏.我想介绍身份验证.我正在使用Node.js和Socket.io.

当用户到达主页面时 - 我希望他们加入游戏,无论他们是否登录 - 但他们将无法在其中执行任何操作(仅限于观看).

那我怎么可以在已打开的套接字上验证用户呢?

如果他们离开网站并回来,我可以保持身份验证吗?你可以通过网络套接字传递cookie吗?

编辑

进一步提问我.我有一个可能的想法是提供websocket连接,然后当他们尝试登录时,它将用户名和密码作为消息传递给websocket.

client.on('onLogin', loginfunction);
Run Code Online (Sandbox Code Playgroud)

然后我可以获取用户名和密码,检查数据库,然后获取套接字的会话ID并将其传递到某个地方,说该会话已经过该用户的身份验证.

这样安全吗?我还能在套接字上实现一个cookie,以便它们可以回来吗?在socket.io中是否有任何方法表明套接字现在已经过身份验证而不是手动检查收到的每条消息?

干杯

authentication websocket node.js socket.io

14
推荐指数
1
解决办法
9603
查看次数

Upstart node.js工作目录

使用Upstart启动Node.js,当尝试访问Node.js中的文件时,如果不使用完整路径,则无法访问它们.我需要它来使用工作目录.

start on startup
stop on shutdown

script
        echo $$ > /var/run/mynodeapp.pid
        exec sudo -u mynodeapp node server.js >> /var/log/mynodeapp.sys.log 2>&1
end script

pre-start script
        echo "Starting" >> /var/log/mynodeapp.sys.log
end script

pre-stop script
        rm /var/run/mynodeapp.pid
        echo "Stopping" >> /var/log/mynodeapp.sys.log
end script
Run Code Online (Sandbox Code Playgroud)

upstart relative-path working-directory node.js

14
推荐指数
1
解决办法
8449
查看次数

游戏循环requestAnimFrame(javascript/canvas)

我正在努力解决这个问题,似乎无法找到更多的参考资料.

我使用的是Google编写的requestAnimFrame:

requestAnimFrame = (function() {
  return window.requestAnimationFrame ||
     window.webkitRequestAnimationFrame ||
     window.mozRequestAnimationFrame ||
     window.oRequestAnimationFrame ||
     window.msRequestAnimationFrame ||
     function(/* function FrameRequestCallback */ callback, /* DOMElement Element */ element) {
       window.setTimeout(callback, 1000/60);
     };
})();
Run Code Online (Sandbox Code Playgroud)

我有一个功能"init"来设置我的游戏.然后调用update,这是调用渲染绘制到画布的游戏循环.如果忽略requestAnimFrame - 每个单独的部分都可以正常工作.一旦我调用requestAnimFrame,我或者得到"太多的递归"错误或者FF只是崩溃.

我在update()中的代码如下:

game.update = function()
{
    stats.update();
    fps.innerHTML = stats.getFPS();

// Render objects
game.render();
// Continue game loop
requestAnimFrame(game.update());
}
Run Code Online (Sandbox Code Playgroud)

stats.update只是更新FPS计数器.所以你可以看到,这个功能并没有做很多.我的game.render函数只是在画布上绘制了一大堆瓷砖,工作正常.

有什么建议?

谢谢!

克里斯

javascript loops canvas

10
推荐指数
1
解决办法
1万
查看次数

Node.js 的权限和组

我正在寻找在 Ubuntu 中设置 Node.js 应用程序的最佳方式。我已经设置了 /var/node/ 来存储各种 Node 应用程序,就像 /var/www/ 一样。

我正在努力实现,但似乎失败了:

NodeAdmins(组)对 /var/node/ 具有读写访问权限。

NodeUser(用户)对 /var/node/ 具有只读访问权限。

NodeUser 是运行 Node 应用程序的用户帐户。

这样,FTP 用户可以更改 /var/node/ 中的任何文件,而 NodeUser 运行的 Node 应用程序可以访问所有文件。

我的问题:

1)这是正确/安全的方式吗?

2) 如何允许多个组对文件夹拥有不同的权限?我使用 chown 将 NodeUser 设置为组的所有者。我不相信这是正确的方法。

directory permissions ubuntu node.js

6
推荐指数
0
解决办法
624
查看次数

在输入字段上禁用浏览器自动填充(所有浏览器)

我有一个简单的 html 表单,我在一个字段上使用“谷歌自动填充”,在两个字段上自动填充数据。

问题是浏览器地址自动填充与 google autofill 重叠

如何在每个浏览器上的字段上禁用浏览器自动填充?

随意分享对此的想法。谢谢你。

html forms

6
推荐指数
2
解决办法
634
查看次数

缓冲器,插座.的node.js

我正在尝试利用Node.js中的TCP套接字与Lua程序进行通信.我正试图解决两个问题.首先缓冲.

缓冲区据我所知,当从套接字向您的代码提供数据时,它将是迄今为止收到的任何数据(流而不是数据包).因此,当您阅读收到的数据时,可能会从发送的数据中删除.

即收到的数据{学校:["Long

vs发送的数据{学校:[{"Longwood","Hillbrow"}]}

解决这个问题的方法是将您的数据放入"缓冲区"并通过您用来显示该信息结尾的任何方法将其拆分.通常看来是新线.

我的问题在这里:

  1. 你最终可以在缓冲区中获得更多2个或更多完整的数据部分,你会如何处理?对于循环?
  2. 离开套接字的数据似乎存在同样的问题.我注意到在其他代码示例中,人们在写入套接字之前使用Node.js 缓冲区.为什么这不用于传入数据?
  3. 如果写入的数据多于可以处理的数据,则Node会为您处理此问题,还是需要提出一种方法.

最后我似乎误解了数据方面.是否需要将发送和接收的所有数据转换为二进制数据并返回?我希望只来回发送JSON数据.我觉得我的困惑在于谎言.例如:

var myQuestion = "Is this acceptable and will I encounter any issues?
socket.write(myQuestion);
Run Code Online (Sandbox Code Playgroud)

非常感谢你的时间.

sockets binary buffer tcp node.js

3
推荐指数
1
解决办法
4301
查看次数