【问题标题】:How to get console.log working in browser when using socket.IO?使用socket.IO时如何让console.log在浏览器中工作?
【发布时间】:2018-10-29 23:35:28
【问题描述】:

我在 HTML 页面中嵌入了一个基本的 socket.io 代码。由于服务端脚本确认,客户端似乎可以毫无问题地连接到服务器。

但由于某种原因,浏览器中的console.log 不起作用,也没有记录消息。

这里是client.html

<script type="text/javascript">
    let socket = io.connect('http://localhost:5000');
    socket.on('connection', function () {
        console.log('Connected to server');
    });
</script>

和 server.js

let io = require('socket.io').listen(process.env.port || 5000);

io.on('connection', function() {
    console.log('client connected');

});

但是,当我将console.log 放在socket.on 之外时,console.log 确实有效:

<script type="text/javascript">
    let socket = io.connect('http://localhost:5000');
    console.log('Connected to server');
    socket.on('connection', function () {
        console.log('Connected to server');
    });
</script>

我做错了什么或者我错过了什么?

【问题讨论】:

  • Console.log 在浏览器中应该可以正常工作...如果您按 F12 并启用开发者工具...。
  • 改用console.log('Connected to server')。撇号,而不是反引号。
  • @paulsm4 我做了,看不到任何日志
  • @ceejayoz 更改了它并且结果相同。

标签: javascript node.js socket.io


【解决方案1】:

查看 socket.io 文档,看起来您需要的事件实际上可能是 connect 而不是 connected

您的控制台日志没有触发,因为 socket.io 从来没有触发一个称为连接的事件。

试试:

socket.on('connect', function () {
    console.log(`Connected to server`);
});

https://socket.io/docs/client-api/#socket

【讨论】:

  • 我使用了连接。连接的是一个字符串
  • 是的,我指的是您收听的事件。请参阅我编辑的答案以进行澄清
  • 当您使用该语法绑定事件监听器时,您需要正确获取事件名称,否则您定义的函数将不会执行。在这种情况下,io.connect 返回的对象具有一组特定的事件,其中一个是 connect
  • 是的。 socket.io 对象不会触发匹配connection 的事件
猜你喜欢
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 2020-09-14
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多