【问题标题】:Does Socket.io work ? Been trying to make it work for 2 weeks nowSocket.io 工作吗?一直在努力让它工作 2 周
【发布时间】:2013-05-25 00:36:44
【问题描述】:

我是socket.io 的新手。听起来不错,但对我没有用。

我在下面列出了两个文件:app.jsindex.html。我将它们都放在同一个目录中。我cd 到那个目录并运行:

node app.js

然后我转到浏览器并访问http://hostname:8888,我得到:

Cannot GET /

所以我尝试http://hostname:8888/index.html 并得到:

Cannot GET /index.html

为什么它不起作用,为什么我得到了

npm ERR! invalid: socket.io-client@0.9.11

请人帮忙。谢谢你。

// app.js
var express = require('express')
, http = require('http');

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

app.configure(function() {
  app.use(express.static(__dirname + '/public'));
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

server.listen(8888);
// index.html
<!DOCTYPE html>
<html lang=en-ca>
  <head>
    <meta charset=utf-8>
    <title>To Do List</title>
  </head>
  <body>
    <script src="http://localhost:8888/socket.io/socket.io.js"></script>
    <script>
      var socket = io.connect('http://localhost:8888');
    </script>
  </body>
</html>
npm ERR! invalid: socket.io-client@0.9.11 /home/username/node_modules/socket.io-client
npm ERR! not ok code 0

【问题讨论】:

  • 是的,Socket.IO 当然可以。

标签: node.js express socket.io


【解决方案1】:

你写了你的app.jsindex.html

我将它们放在同一个目录中。

但是你的代码说:

app.use(express.static(__dirname + '/public'));

这基本上意味着:“我的index.html 文件应该在一个名为public 的目录中,它可以在与app.js 相同的目录中找到”。所以它期待这个目录结构:

directory/app.js
directory/public/index.html

所以要么创建一个public 目录并将您的index.html 移动到那里,或者告诉express.static 在与app.js 相同的目录中找到它,如下所示:

app.use(express.static(__dirname));

(尽管正如 @josh3736 在 cmets 中指出的那样,这会引入安全问题,因此您不想在任何生产代码中使用该解决方案!不过,出于测试目的,没关系。)

至于您的其他问题,目前尚不清楚导致该错误的原因。请多加一点npm 输出。

但是,如果要从浏览器运行 socket.io 客户端,则不需要安装 socket.io-client 软件包,因为它已经是 socket.io 软件包的一部分(-client 软件包是旨在用于从 Node 本身实现客户端)。

【讨论】:

  • 我强烈建议反对 express.static(__dirname),因为您会将应用程序的服务器端源代码 (app.js) 提供给公众。跨度>
  • 除了你正在监听的端口之外,Socket.io 是否需要打开端口?
  • @user1532576 不,它可以搭载 HTTP 端口(在这种情况下为8888
猜你喜欢
  • 1970-01-01
  • 2012-01-15
  • 2019-04-24
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 2017-08-19
  • 2021-07-05
  • 1970-01-01
相关资源
最近更新 更多