【问题标题】:Configure socket.io on MAMP localhost在 MAMP localhost 上配置 socket.io
【发布时间】:2015-09-13 18:49:25
【问题描述】:

我正在尝试为我正在构建的 web 应用配置 socket.io。

我已经用 npm 成功安装了依赖项。

这是在服务器端执行的 index.js。 (我所有的公用文件夹,包括 index.html,都位于 httpdocs 文件夹中)

var express = require("express");
var app = express();
var port = 8080;

app.get("/", function(req, res){
    res.send("Hello world!");
});

app.use(express.static(__dirname + '/httpdocs'));
var io = require('socket.io').listen(app.listen(port));

当我转到http://localhost:8080 时,我可以看到“Hello world!”在浏览器中,当我转到 http://localhost:8080/socket.io/socket.io.js 时,它会显示 socket.io.js 文件,所以它似乎工作正常。

在客户端,我似乎无法在我的 index.html 中使用下面的行导入那个 socket.io.js

<script src="/socket.io/socket.io.js"></script>

它只是重定向到 404 页面并删除语法错误。

我认为这是因为我的 MAMP 使用端口 80 用于客户端的 Apache 服务器。该项目作为虚拟主机运行。

<VirtualHost *:80>
    ServerAdmin *my email*
    DocumentRoot "*document root*/httpdocs/"
    ServerName project.local
    ServerAlias *.project.local
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

将侦听器端口从 8080 更改为 80 并不能解决该问题。我想我必须同时使用两个不同的端口。

【问题讨论】:

  • 奇怪的是http://localhost:8080/socket.io/socket.io.js 会显示 JS 文件,但网页中的 &lt;script src="/socket.io/socket.io.js"&gt;&lt;/script&gt; 不起作用。唯一可能的方法是,如果您拥有此脚本标记的网页不是来自http://localhost:8080。放置脚本标签的网页的 URL 是什么?如果您在同一主机上有两个服务器进程,它们将不得不监听不同的端口。
  • 我正在使用的网页是“project.local”,MAMP 将 URL 处理为虚拟主机。当我转到localhostlocalhost:80 时,我还在浏览器中看到我的站点,但socket.io 导入失败。当我浏览 localhost:8080 时,我看到 de index.js 删除了“Hello World”消息

标签: apache sockets socket.io mamp


【解决方案1】:

我也在尝试这样做,据我所知,您必须使用官方 Apache 客户端(我在 Mac 上找不到的东西,我也使用它)或使用 VirtualHost 指令,但据我所知,您无法在 MAMP WebStart 页面上执行此操作。尝试使用其他服务器客户端,也许?

(注意:如果我找到 Mac 官方 Apache 客户端,我将编辑此问题以在底部添加链接。)

【讨论】:

  • 欢迎来到 Stack Overflow!这应该是评论,而不是答案。多一点代表,you will be able to post comments.
  • @IKavanagh 哦,我才意识到我点击了答案。很抱歉,谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 2018-10-09
  • 2017-09-16
  • 1970-01-01
  • 2012-12-07
  • 2014-02-05
  • 2011-09-13
相关资源
最近更新 更多