【问题标题】:SocketIO and NodeJS without express?没有快递的 SocketIO 和 NodeJS?
【发布时间】:2018-08-05 11:39:20
【问题描述】:

我有一个用 PHP 编写的完全独立的网站,我正在尝试同时使用 node 和 socketIO 的功能来发送消息。

我想创建一个“{用户名}访问过的{页面}”系统,这样我就可以实时查看我的用户何时登录、他们访问了哪些页面以及网站上的其他内容。

我不确定 NodeJS + SocketIO 是否是最好的选择,但我不知道有什么更好的方法。当我在 google 上找到的每个示例都依赖于 express 时,问题就来了。

是否有或者任何人可以发布一个干净的 socketIO 和代码的最小示例,而不依赖于 express 来打印 html。

【问题讨论】:

  • 分析服务怎么样?喜欢谷歌分析?

标签: javascript php node.js socket.io


【解决方案1】:

您的概念是可靠的(PHP 用于应用程序,SocketIO 用于动态数据更新)。 SocketIO 可以使用下面的基本 http 服务器。不要忘记为 socketIO 添加客户端库。直接从这里的文档https://socket.io/docs/

    var app = require('http').createServer(handler)
    var io = require('socket.io')(app);
    var fs = require('fs');

    app.listen(80);// <---- change the port

    function handler (req, res) {
      fs.readFile(__dirname + '/index.html',
      function (err, data) {
        if (err) {
          res.writeHead(500);
          return res.end('Error loading index.html');
        }

        res.writeHead(200);
        res.end(data);
      });
    }

    io.on('connection', function (socket) {
      socket.emit('news', { hello: 'world' });
      socket.on('my other event', function (data) {
        console.log(data);
      });
    });

这是文档中的客户端:

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

【讨论】:

  • 我建议将 app 变量重命名为 server,因为这样更能说明它是什么。
猜你喜欢
  • 2022-01-15
  • 2012-07-14
  • 2013-03-09
  • 2018-06-29
  • 1970-01-01
  • 2016-06-14
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多