Node.JS – 简单的Socket.IO示例不起作用。 获取debugging服务的静态内容/socket.io.js(Mac OSX / Localhost)

我刚刚开始与node.js前几天,我知道试图使用socket.io模块。 但是这不是我所期望的。 我试图重现的例子是这样的: http : //robdodson.me/blog/2012/06/04/deploying-your-first-node-dot-js-and-socket-dot-io-app-to -heroku /

我知道他们正在使用的Express版本已经过时,所以我更新了我的代码以适应他们正在使用的模块的新版本。

我的问题是我的客户端没有得到我的服务器发出的,这里是我的服务器端代码:

var express = require('express'), http = require('http'), app = express(), port = 8080, // Use 8079 for dev mode server = http.createServer(app).listen(process.env.PORT || port, function(){ console.log('Express server listening on port %d in %s mode', server.address().port, app.settings.env); }), io = require('socket.io').listen(server), routes = require('./routes'); // Configuration app.configure(function() { app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); app.configure('development', function() { app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function() { app.use(express.errorHandler()); }); // Heroku won't actually allow us to use WebSockets // so we have to setup polling instead. // https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku io.configure(function () { io.set("transports", ["xhr-polling"]); io.set("polling duration", 10); }); // Routes app.get('/', routes.index); var status = "All is well."; io.sockets.on('connection', function (socket) { io.sockets.emit('status', { status: status }); // note the use of io.sockets to emit but socket.on to listen socket.on('reset', function (data) { status = "War is imminent!"; io.sockets.emit('status', { status: status }); }); }); 

这里是客户端:

 <script src="http://localhost:8080/socket.io/socket.io.js"> var socket = io.connect(document.location.href); </script> <div id="status"></div> <button id="reset">Reset!</button> 

所以,如果我理解的很好,我应该得到的是状态栏第一次“一切都好”,“战争即将到来!” 如果我点击重置。 但我得到的只是一无所有。

我试过这些答案,但我看不出解决scheme代码和我的,或有时只是过时的任何区别:1. Node.js + socket.io:服务器上的应用程序无法正常工作 2. NodeJS – Socket.IO安装程序:服务静态内容没有握手(在Rackspace云服务器上的Ubuntu)

我尝试了其他主题给出的所有解决scheme,但绝对不适合我。 每个模块都已正确安装。 我跟着我在第一个跟着的教程中给出的步骤。 如果有人知道发生了什么事情,或者有人遇到同样的问题,欢迎您。

谢谢。

你的客户没有做任何事情的原因是因为你没有告诉它做任何事情。 您需要分配处理程序来执行某些操作。 所以,为了解决这个问题,你需要告诉resetbutton在被点击的时候使用socket.emit() ,并且你还需要为status事件分配一个处理程序来改变div的内容。

 <script type="text/javascript" src="http://localhost:8080/socket.io/socket.io.js"></script> <script type="text/javascript"> var socket = io.connect(document.location.href); </script> <div id="status"></div> <button id="reset" onclick="socket.emit('reset')">Reset!</button> <script type="text/javascript"> socket.on('status', function(data) { document.getElementById('status').innerHTML = data.status; }); </script>