Heim  >  Artikel  >  Backend-Entwicklung  >  javascript - nodejs监听房间问题

javascript - nodejs监听房间问题

WBOY
WBOYOriginal
2016-06-06 20:17:511490Durchsuche

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是什么值得情况下,要怎么实现这个功能?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn