Node.js 无法获取socket.io进行轮询(节点、js、express、ejs、socket.io)
我正在努力让socket.io工作。 以下是我使用的软件包:Node.js 无法获取socket.io进行轮询(节点、js、express、ejs、socket.io),node.js,socket.io,Node.js,Socket.io,我正在努力让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 = r
"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>
实时网络聊天
var socket=io.connect('http://localhost');
socket.on('news',函数(数据){
控制台日志(数据);
emit('my other event',{my:'data'});
});
嗨,世界!
现在我不断得到:
获取网络::错误连接被拒绝
我不确定我做错了什么。据我所知,我以正确的方式将socket.io连接到服务器
希望任何人都能指出我做错了什么。您的节点服务器侦听端口3000。在客户端更改此选项:
var socket = io.connect('http://localhost');
到
另请查看socket.io教程:
编辑:
我在我的服务器上重新创建了你的代码。如果客户端代码与您的类似:
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
var socket=io.connect('http://localhost');
socket.on('news',函数(数据){
控制台日志(数据);
emit('my other event',{my:'data'});
});
在控制台中,我得到“加载资源失败:net::ERR\u连接被拒绝”
当我更改客户端代码时
<script>
var socket = io();
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
var socket=io();
socket.on('news',函数(数据){
控制台日志(数据);
emit('my other event',{my:'data'});
});
一切正常。问题似乎出在客户端套接字变量的初始化中。您的节点服务器侦听端口3000。在客户端更改此选项:
var socket = io.connect('http://localhost');
到
另请查看socket.io教程:
编辑:
我在我的服务器上重新创建了你的代码。如果客户端代码与您的类似:
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
var socket=io.connect('http://localhost');
socket.on('news',函数(数据){
控制台日志(数据);
emit('my other event',{my:'data'});
});
在控制台中,我得到“加载资源失败:net::ERR\u连接被拒绝”
当我更改客户端代码时
<script>
var socket = io();
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
var socket=io();
socket.on('news',函数(数据){
控制台日志(数据);
emit('my other event',{my:'data'});
});
一切正常。问题似乎出在客户端套接字变量的初始化中。感谢您的评论,但它仍然给出了相同的错误。我在前面使用了这些教程作为参考,但它找不到它们的作用,而我在代码中没有找到它们。@Merijn在客户端代码中,尝试在没有URL:var socket=io()的情况下初始化socket.io。根据手册,它将尝试连接到为页面提供服务的主机。感谢您的评论,但它仍然给出相同的错误。我在前面使用了这些教程作为参考,但它找不到它们的作用,而我在代码中没有找到它们。@Merijn在客户端代码中,尝试在没有URL:var socket=io()的情况下初始化socket.io。根据手册,它将尝试连接到为页面提供服务的主机。