【问题标题】:Should I be using socket.io for my nodejs application?我应该为我的 nodejs 应用程序使用 socket.io 吗?
【发布时间】:2012-09-24 07:59:59
【问题描述】:

我正在学习 HTML5,为此我使用 Express、PassportJS、Mongoose/MongoDB、connect-mongoose、NowJS 构建了一个简单的聊天室。

一切正常,除了一个大问题:我在验证 NowJS 时遇到问题。

通常的做法是在服务器端读取“this.user.cookie”属性并解析字符串。但是,由于某种原因,cookie 不会被发送回服务器。 (详细信息:NowJS cookie field in this.user is empty)经过大量谷歌搜索后,我认为我没有其他安全的方法来验证 NowJS 连接/客户端。

问题

我正在考虑从我的网络应用程序中剥离所有 NowJS,并直接使用 socket.io。 socket.io 使用起来容易吗?如果我切换到 socket.io 而不是使用 NowJS,我会失去关键功能吗?

我可以使用 socket.io 来:

1) 调用服务器端函数?

2) 与客户端共享服务器端变量?

【问题讨论】:

    标签: node.js socket.io nowjs-sockets


    【解决方案1】:

    Socket.io 不共享变量或允许您调用服务器端函数。它允许您在客户端和服务器端绑定和发出事件。

    至于你的 cookie 没有被发送,它很可能被认为是一个 cors、跨域请求,如果你为 socket.io 使用不同的端口然后设置 cookie 的 http 服务器可能会发生这种情况。

    【讨论】:

    • 有趣。我使用 www.mywebsite.com:3000 而不是 www.mywebsite.com 因为 Dreamhost 不允许我们绑定到端口 80。所以这可能是问题所在!有没有办法解决这个问题?我想在尝试使用 cookie 对 socket.io 连接进行身份验证时会遇到同样的问题?也许我应该换主机!
    • 你有 socket.io 也在监听 3000 端口吗? github.com/alphapeter/socket.io-express 是一个很好的库,用于展示如何使用 express v3 对 socket.io 进行身份验证,我根据自己的需要进行了一些修改,但效果很好。
    • 是的,它也在监听 3000 端口。 Dreamhost 有 Apache 在端口 80 上侦听,我们不允许解除绑定。因此,我也会遇到 socket.io 的问题,对吗?
    • 你是一个救生员!我切换到端口 8080 并且 cookie 正确地传递给了 NowJS !!!谢谢!
    • 没问题勒让德,很高兴我能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多