你可以看看下面的代碼,讓我知道我在做什麼錯嗎?在Ubuntu 12.4上運行Node.js + Express + Socket.io我想創建一個簡單的Push函數。服務器工作正常,但我不能在頁面上看到div id「status」內容,顯然該功能沒有運行!Node.js和Socket.io不能在這個例子中工作
感謝您的幫助和提前發表評論,並對很長的帖子感到抱歉!
這裏是app.js文件 /** * 模塊的依賴關係。 */
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/', routes.index);
app.get('/users', user.list);
var status = "I am not changed yet!.";
io.sockets.on('connection', function (socket) {
io.sockets.emit('status', { status: status });
socket.on('reset', function (data) {
status = "You Change the text!";
io.sockets.emit('status', { status: status });
});
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
我修改了 「的package.json」,如下,加入sockt.io到依賴性
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "3.2.3",
"jade": "*",
"socket.io:0.9.14"
}
}
在視圖文件夾和index.jade我有
<div id="status"></div>
<button id="reset">Reset!</button>
和layout.jade我所擁有的是:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Title</title>
<meta name="description" content="">
<meta name="author" content="">
<!-- HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- styles -->
<link href="/css/main.css" rel="stylesheet">
</head>
<body>
<%- body %>
<script src="node_modules/socket.io/socket.io.js"></script>
<script src="public/js/libs/jquery.js"></script>
<script src="public/js/main.js"></script>
</body>
和最後這裏面我有main.js功能:
var socket = io.connect(window.location.hostname);
socket.on('status', function (data) {
$('#status').html(data.status);
});
$('#reset').click(function() {
socket.emit('reset');
});
錯誤信息由羅伯特提示編輯後
SyntaxError: Unexpected end of input
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
看看瀏覽器控制檯,這個腳本是否成功加載:node_modules/socket.io/socket.io.js?從socket.io文件,這應該工作: – ltebean 2013-05-09 03:02:41