Maison >développement back-end >tutoriel php >javascript - nodejs监听房间问题

javascript - nodejs监听房间问题

WBOY
WBOYoriginal
2016-06-06 20:17:511543parcourir

1.app.js

<code>
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var http = require('http');

// 监听端口
server.listen(8080);

app.get('/test', function(req, res) {
    var id = req.query.id;
    var room = '/'+id;
    io.of(room).emit('message', {flag: 'refresh'});
    res.send(id);
});
</code>

2.index.html


<code>var id = 1;   //id是变量,由控制器模板赋值来的。为了简化程序我先给一个固定的值
var ws = io.connect('http://192.168.0.30:8888/'+id);
ws.on('message', function(obj){
    console.log(obj);
});</code>

首先我打开浏览器新建一个窗口访问http://192.168.0.30:8888/test?id=1,然后打开index.html按下F12,控制台没有东西输出。然后我重新刷新index.html,再次访问http://192.168.0.30:8888/test?id=1时,控制台就有东西了输出了。以后每次访问http://192.168.0.30:8888/test?id=1,index.html的控制台都有东西输出。觉得很奇怪。

请问为什么第一次访问index.html的时候控制台为啥没东西输出?问题可能描述的不清楚,请大神们帮忙解答下。在不知道id是什么值得情况下,要怎么实现这个功能?

回复内容:

1.app.js

<code>
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var http = require('http');

// 监听端口
server.listen(8080);

app.get('/test', function(req, res) {
    var id = req.query.id;
    var room = '/'+id;
    io.of(room).emit('message', {flag: 'refresh'});
    res.send(id);
});
</code>

2.index.html


<code>var id = 1;   //id是变量,由控制器模板赋值来的。为了简化程序我先给一个固定的值
var ws = io.connect('http://192.168.0.30:8888/'+id);
ws.on('message', function(obj){
    console.log(obj);
});</code>

首先我打开浏览器新建一个窗口访问http://192.168.0.30:8888/test?id=1,然后打开index.html按下F12,控制台没有东西输出。然后我重新刷新index.html,再次访问http://192.168.0.30:8888/test?id=1时,控制台就有东西了输出了。以后每次访问http://192.168.0.30:8888/test?id=1,index.html的控制台都有东西输出。觉得很奇怪。

请问为什么第一次访问index.html的时候控制台为啥没东西输出?问题可能描述的不清楚,请大神们帮忙解答下。在不知道id是什么值得情况下,要怎么实现这个功能?

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn