【问题标题】:404 error using socket.io with express-generator使用带有 express-generator 的 socket.io 时出现 404 错误
【发布时间】:2014-08-03 12:23:18
【问题描述】:
我正在使用 express-generator 结构构建 socket.io 的“hello world”。当我执行我的应用程序时,我收到“localhost/socket.io/socket.io.js 404 Uncaught ReferenceError: io is not defined”。我安装了套接字依赖项,并将套接字 io 路由创建到 index.js(由 express-generator 生成)中。
路由/index.js
var express = require('express');
var router = express.Router();
var http = require('http').Server(express); //http;Server(serverVar)
var io = require('socket.io')(http);
views/index.ejs
<script src="socket.io/socket.io.js"></script>
var socket = io();
【问题讨论】:
标签:
node.js
express
socket.io
【解决方案1】:
使用 express-generator 工具生成 express 项目后遇到同样的问题。使用 this 配置,一切都像魅力一样
【解决方案2】:
我建议你使用全局结构来定义 express.js 的路由,你需要使用 io.connect(path) 函数将你的网页连接到你的 node.js 服务器
路由/index.js
var express=require('express');
var http=require('http');
var app=express();
var server=http.createServer(app).listen(process.env.PORT);
var io=require('socket.io').listen(server);
app.use(express.static(__dirname+'/views'));
并使用 app.get 方法处理不存在的 URL 请求,您可以将任何页面名称放在 Default.html 的位置
app.get('*',function(request,response){
response.redirect('Default.html');
});
然后在您的客户端文件views/index.ejs 中使用此代码
var socket;
$(document).ready(function(){
socket=io.connect(window.location.hostname);});
您可以使用您的 url 本地路径更改您的“window.location.hostname”全局变量,以防发生错误