【问题标题】:Socket.io communicates in oner direction onlySocket.io 只在一个方向通信
【发布时间】:2013-05-29 03:03:55
【问题描述】:

我正在尝试让 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>

【问题讨论】:

  • 我认为您正在尝试像 http 服务器一样使用 socket.io。您不能传输 html 页面之类的数据。您可以发送数据,但您需要 javascript/jquery 来处理发送的数据才能看到它。尝试将alert('hi!'); 放在 index.html 中的 connect 聊天中

标签: node.js express socket.io


【解决方案1】:
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。不太擅长解释。我在这里使用 express 是因为它更简单。如果这不起作用,请告诉我您使用的是什么版本的 node、express 和 socket.io。另外,我还没有为 socket.io 使用命名空间,所以这可能是个问题。

【讨论】:

  • 我添加了它,但没有帮助。当我去查看页面源时,我得到的只是“欢迎使用 Socket.io”。欢迎来到 Socket.io,没有 html 或 javascript。也许这是一个防火墙问题。 socket.io 是否在 80 以外的其他端口上通信?
  • 我改变了答案。我',试图弄清楚如何最好地使用堆栈溢出。我希望这会有所帮助。
猜你喜欢
  • 2019-06-02
  • 1970-01-01
  • 2018-08-20
  • 2020-10-29
  • 2012-06-15
  • 2013-01-10
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
相关资源
最近更新 更多