我是Node.js的新手。我正在使用socket.io来构建实时的feed应用程序。
我正在使用http://socket.io/get-started/chat/开始使用我的应用程序。 与快递结合使用
以下是我的服务器代码
/**
* Module dependencies.
*/
var express = require('express');
var logger = require('morgan');
var routes = require('./routes');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
// log requests
app.use(logger('dev'));
app.use('/rest', routes.userInfo, routes.matchList, routes.teamList,
routes.completedMatchList);
io.on('connection', function(socket){
console.log('a user connected');
});
app.listen(3006);
console.log('listening on port 3006');
然后我在我的应用程序的web文件夹中有一个index.html。
我只是使用普通代码来实现客户端套接字,如下所示
<script src="/node_modules/socket.io/node_modules/socket.io-client/socket.io.js"></script>
<script>
var socket = io();
</script>
我启动了我的服务器并且运行良好 但即使在客户端页面加载并提供服务之后,也不会监听连接事件,并且代码不会在控制台中打印&#34;用户已连接&#34;。
只是添加一点,我在中间使用一个应用程序路由器,从端口5000开始。
我在Chrome控制台中检查过,它会不断报告错误,如
http://localhost:5000/socket.io/?EIO=3&transport=polling&t=LF2viiR
http://localhost:5000/socket.io/?EIO=3&transport=polling&t=LF2vj0v
欢呼声,
Saurav
答案 0 :(得分:0)
在这种情况下,您无法使用app.listen()
,因为您没有使用Socket.io正在使用的HTTP
实例进行监听。
您在创建时将快速实例app
传递给HTTP
实例http
。因此app
用作http
的基础。然后,您在创建http
时将socket.io
传递给io
。
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
您需要做的就是使用http
变量进行收听,因为这是您用io
实例化的服务器。将您的app.listen()
更改为http.listen()
。
答案 1 :(得分:0)
首先按照npm安装socket.io
npm install socket.io --save
,
节点程序(后端):
取代:
app.listen(3006);
转变为:
http.listen(port, function(err) {
if (err) {
console.log(err);
} else {
console.log("Listening on port 8080");
}
});
前端:
如果您的Node程序和前端程序在localhost中的同一端口运行,那么
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
</script>
节点程序和前端程序在两个不同的端口运行。
<script src="http://localhost:5000/"></script>
<script>
var socket = io("http://localhost:5000/socket.io/socket.io.js");
</script>
希望节点程序正常可行。
答案 2 :(得分:0)
非常感谢您的投入和帮助。
我所做的一些事情帮助我解决了这个问题。
(a)我使用io.connect(&#34; url&#34;)代替io()。
(b)服务器index.js中变量和依赖项初始化的第二顺序
这两个解决方案都受此链接的启发
欢呼声,
Saurav