【问题标题】:How do i pass a PHP variable or session through nodeJS to socket.io on connection如何在连接时通过 nodeJS 将 PHP 变量或会话传递给 socket.io
【发布时间】:2017-11-23 00:35:41
【问题描述】:

我目前正在为我的网站构建一个聊天,该网站是用 PHP 和 MongoDB 构建的。

当用户登录时,我为用户创建会话变量,但似乎找不到通过 nodejs 将该变量传递给 socket.io 的方法。

我在聊天 html 页面中使用这个

var socket = io('http://localhost:3000', { query: *I need my php information here* });

Ajax 达不到目的,速度太慢了。

注意:我知道我可以通过 ajax 传递消息,但我更愿意传递连接。

我在 server.js 中使用此代码,这使得它不可能成为 .php 文件

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

【问题讨论】:

  • 你可以在javascript中添加php代码:
  • 是的,但是我将无法执行 nodeJS sendfile,因为扩展名将是 .php

标签: php node.js ajax mongodb socket.io


【解决方案1】:

您可以在全局 Javascript 变量中传递您的 PHP 信息。像

<script>var phpInfo = "<%= $yourInfo =>"</script>

(这里的&lt;%= 代表&lt;?php echo "" ?&gt;
然后,您可以将此变量用于您的连接

var socket = io('http://localhost:3000', { query: phpInfo });

这不是最佳的,但它有效,您可以这样做的另一种方法是在某个时候(用户连接或加载主页时)检索您的信息,并使用 window.localStorage.setItem('phpInfo', phpinfo) 将其保存到 HTML5 localStorage 中然后使用window.localStorage.getItem('phpInfo')访问这些数据
这是一种更优雅的方式。

【讨论】:

  • app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); });问题是我目前正在使用 socket.io 脚本,它使用以下代码,因为文件扩展名将是 .php
  • 那么你应该将数据保存在localStorage中。在某个时候检索它,然后在需要时使用它。
  • 我想这似乎是除了与 express 进行会话之外的唯一方法。我一定会试一试的。
猜你喜欢
  • 2013-08-11
  • 2011-06-12
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
相关资源
最近更新 更多