因为我是Node.js的新手,正在学习不同的文章。所以,据我所知,我的代码是
在服务器端使用 app.js
var http = require('http');
var app = http.createServer(function(req,res)
{
req.on('end',function()
{
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello');
});
});
var io = require('socket.io').listen(app);
io.sockets.on('connection',function(socket)
{
socket.emit('connect',{msg:'Hello Client'});
socket.on('client_Says',console.log);
});
app.listen(3000);
在客户端使用 index.html
<script type="text/javascript" src="//localhost:3000/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('//localhost:3000');
socket.on('connect',function(data)
{
alert('Server says '+data.msg);
socket.emit('client_Says',{data:'Hello Server'});
});
</script>
我在上面的代码中做错了什么?当我在控制台中运行app.js时,它说 info - socket.io已启动,但当我运行 http:// localhost:3000 时,它只是继续请求服务器。
此外我想知道,无论我在电脑上的哪个位置创建我的Node文件夹,并将 app.js 和 index.html 文件放在上面,它在浏览器中运行 http:// localhost:3000 会在Node控制台中运行app.js后自动将该文件夹作为localhost的站点文件夹吗?
答案 0 :(得分:0)
在你的app.js更新代码中
var http = require('http'),
fs = require('fs'), //<--- File Module
index = fs.readFileSync(__dirname + '/index.html');
var app = http.createServer(function(req,res)
{
res.writeHead(200, {'Content-Type': 'text/html'}); //<-Updated to text/html
res.end(index); //<---I am sending page
});
希望能解决您的问题
答案 1 :(得分:0)
你不应该在服务器端这样做:
socket.emit('connect',{msg:'Hello Client'});
因为connect
是从服务器成功连接时发出的默认事件。因此,当客户端连接时,服务器会触发其默认的“连接”事件,但此处您还会触发名为connect的事件,这可能会导致问题。