我的服务器结构很简单。我有一个与我的应用程序处于同一级别的公共文件夹。
app.js
node_modules(folder)
express(folder)
socket.io(folder)
public(folder)
index.html
js(folder)
css(folder)
我的应用程序如下
var sys = require('sys'),
express = require('express'),
app = express.createServer('127.0.0.1'),
io = require('socket.io');
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.send('Hello World');
});
app.listen(3000);
var socket = io.listen(app);
socket.on('connection', function (client){
// new client is here!
});
我的html页面(简化)是
<html>
<p id="text">socket.io</p>
<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript" src="js/lib/jquery-1.4.2.min.js"></script>
</html>
当我运行服务器并加载我的index.html时,找不到socket.io.js,会产生404错误。是什么赋予了? 在我的情况下,socket.IO必须全局安装吗?
答案 0 :(得分:6)
试试这个:
var sys = require('sys'),
express = require('express'),
app = express(),
io = require('socket.io');
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
res.send('Hello World');
});
var server = app.listen(3000);
var socket = io.listen(server);
socket.on('connection', function (client){
// new client is here!
});
一些解释:
express.createServer
,使用Express 3运行express()
进行实例化
快递; io.listen
应该传递http.Server
个实例,而你传递一个Express实例(http.Server
返回app.listen(...)
个实例); socket.io.js
文件放在任何地方; socket.io
安装一个处理程序,该处理程序监视该文件的请求,并自动为其提供服务;