我试图让socket.io工作。 这是我使用的包:
"express": "~4.9.0",
"ejs": "~0.8.5",
"socket.io":"~1.3.3"
我的app.js:
// loading modules
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
//routers
var indexRouter = require('./routes/index');
// Setup serving static assets
app.use(express.static('public'));
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
// Setup initial routing - index
app.use('/', indexRouter);
// Start the server
server.listen(3000, function(){
console.log('App listening at http://localhost:3000');
});
我的路由器:
var express = require('express');
var router = express.Router();
router.get("/", function(req, res){
res.render("index");
});
module.exports = router;
我的模板
<html>
<head>
<title>Real time web chat</title>
<script src='/socket.io/socket.io.js' type='text/javascript'></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</head>
<body>
hi world!
</body>
</html>
现在我一直在:
获取http://localhost/socket.io/?EIO=3&transport=polling&t=1452340948465-61 net :: ERR_CONNECTION_REFUSED
我不确定我做错了什么。据我所知,我将socket.io以正确的方式附加到服务器上?
希望任何人都可以指出我做错了什么。
答案 0 :(得分:4)
您的节点服务器侦听端口3000.在客户端更改此信息:
var socket = io.connect('http://localhost');
到
var socket = io.connect('http://localhost:3000');
另请查看socket.io教程:http://socket.io/get-started/chat/
编辑:
我在服务器上重新创建了代码。如果客户端代码与您的相似:
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
在控制台中我得到“无法加载资源:net :: ERR_CONNECTION_REFUSED”
当我更改客户端代码时
<script>
var socket = io();
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
一切正常。似乎问题在于客户端套接字变量的初始化。