【问题标题】:Socket.IO Simple Express Example Not Working on OS X Mountain LionSocket.IO Simple Express 示例不适用于 OS X Mountain Lion
【发布时间】:2012-08-13 12:38:23
【问题描述】:

我正在使用来自https://github.com/LearnBoost/socket.io 的以下示例代码来启动 Socket.IO 和 Express 示例。

当我到达本地主机时,我得到了这个错误:

Cannot GET /

我的 app.js 看起来像这样:

var express = require('express');
var io = require('socket.io');
var server = require('http');

var app = express()
  , server = require('http').createServer(app)
  , io = io.listen(server);

server.listen(80);

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

我的 index.html 看起来像这样:

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

包:

npm ls
├─┬ express@3.0.0rc2
│ ├── commander@0.6.1
│ ├─┬ connect@2.4.2
│ │ ├── bytes@0.1.0
│ │ ├── formidable@1.0.11
│ │ ├── pause@0.0.1
│ │ └── qs@0.4.2
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── debug@0.7.0
│ ├── fresh@0.1.0
│ ├── methods@0.0.1
│ ├── mkdirp@0.3.3
│ ├── range-parser@0.0.4
│ └─┬ send@0.0.3
│   └── mime@1.2.6
└─┬ socket.io@0.9.10
  ├── policyfile@0.0.4
  ├─┬ redis@0.7.2
  │ └── hiredis@0.1.14
  └─┬ socket.io-client@0.9.10
    ├─┬ active-x-obfuscator@0.0.1
    │ └── zeparser@0.0.5
    ├── uglify-js@1.2.5
    ├─┬ ws@0.4.21
    │ ├── commander@0.6.1
    │ ├── options@0.0.3
    │ └── tinycolor@0.0.1
    └── xmlhttprequest@1.4.2

谢谢!!

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    您尚未指示 Express 提供您的 index.html 文件。让它运行的最简单的方法可能是创建一个名为 public 的目录并将index.html 放入其中,然后修改您的 Express 服务器,以便它从该目录提供静态文件:

    var express = require('express');
    var io = require('socket.io');
    var server = require('http');
    var path = require('path');
    
    var app = express()
      , server = require('http').createServer(app)
      , io = io.listen(server);
    app.use(express.static(path.join(__dirname, 'public')));
    

    然后在浏览器中访问localhost/index.html

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2012-01-23
      • 2013-06-17
      • 2012-07-25
      • 2012-12-07
      相关资源
      最近更新 更多