Socket.io仅在oner方向上进行通信

时间:2013-05-28 14:58:58

标签: node.js express socket.io

我想让Socket.io工作。我的代码如下。我得到了“欢迎来到Socket.io”。当我访问时

http://localhost/index.html 

但这就是我得到的。 app.js看起来会发回一条消息,但我的Javascript控制台什么都没有,除了“欢迎来到Socket.io”之外,页面上没有任何内容。我试过访问

http://localhost/chat

http://localhost/news 

并且结果相同。我想使用Socket.io测试双向通信。这个脚本会为我做这个,并且是一个可能阻止返回消息的防火墙。这是Socket.ip V0.9页面的一个例子。

// app.js
var io = require('socket.io').listen(80);

var chat = io
   .of('/chat')
   .on('connection', function (socket) {
       socket.emit('a message', {
          that: 'only',
         '/chat': 'will get'
    });
    chat.emit('a message', {
    everyone: 'in'
  , '/chat': 'will get'
  });
});

var news = io
  .of('/news')
  .on('connection', function (socket) {
  socket.emit('item', { news: 'item' });
});

index.html

//index.html
<script>
var chat = io.connect('http://localhost/chat')
  , news = io.connect('http://localhost/news');

chat.on('connect', function () {
  chat.emit('hi!');
});

news.on('news', function () {
  news.emit('woot');
});
</script>

1 个答案:

答案 0 :(得分:0)

Oh. Interesting. It does not look like you have a server even running, just io.

//app.js
var app = express();
var http = require('http');
var server = http.createServer(app);

app.use(express.static(__dirname + '/public'));
/* place index.html in /public */
var port = process.env.PORT || 5050;

var io = require('socket.io').listen(server, {
  log : false
});
io.sockets.on('connection', function(socket) {
socket.on('hi', function(data) {
console.log('yay');
socket.emit('hello');
});
});
server.listen(port);

//for index.html do the same.

chat.on('connect', function () {
  chat.emit('hi');
});
chat.on('hello',function(){
console.log('yay got hello');
}):

// 我刚刚开始stackoverflow。解释不是很好。我在这里使用快递,因为它更简单。如果这不起作用,请告诉我您正在使用的node,express和socket.io的版本。另外,我还没有为socket.io使用名称空间,所以这可能是一个问题。