Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法获取socket.io进行轮询(节点、js、express、ejs、socket.io)_Node.js_Socket.io - Fatal编程技术网

Node.js 无法获取socket.io进行轮询(节点、js、express、ejs、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

我正在努力让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>

实时网络聊天
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。根据手册,它将尝试连接到为页面提供服务的主机。