如何使用 socket.io 触发消息?

Posted

技术标签:

【中文标题】如何使用 socket.io 触发消息?【英文标题】:How to trigger messages using socket.io? 【发布时间】:2013-03-05 21:22:48 【问题描述】:

如何使用 html5 中的按钮发送消息?

这是我的代码:

服务器:

var io = require('socket.io').listen(72);


io.on('connection', function(client)
    client.send('"success": 1');
    client.on('message', function(data) 
        console.log('Client:', data); 
    ); 
    client.on('disconnect', function() 
        console.log('Goodbye');
    ); 
);

客户:

<!DOCTYPE html>
<html>

<head>
<script src="http://192.168.0.102:72/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://192.168.0.102:72');
function doit()
  socket.on('message', function(data) 
    socket.send("hi there");
   );

</script>

</head>

<body>
    <button name="Klickme" type="button" onclick="doit();">On!</button>
    <button id="off" type="button" onclick="close();">Off!</button>
</body>

</html>

我的客户端/服务器上没有错误,但我也没有收到消息。有人可以给我一个提示吗?谢谢!!!

【问题讨论】:

【参考方案1】:

on 用于当你想监听从服务器发送的事件时,如果你想发送消息你应该使用emit 代替:

socket.emit('message',  my: 'data' );

【讨论】:

【参考方案2】:

当您单击按钮时,您的客户端会等待来自服务器的message(在它发送hi there 之前)。但是一旦页面加载并且客户端连接到服务器,服务器就会发送消息。那是服务器发送的唯一消息。所以客户端一直在等待来自服务器的消息。把doit()改成这个

function doit()
    socket.send("hi there");

【讨论】:

以上是关于如何使用 socket.io 触发消息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在前端获取 socket.on 函数?事件被触发和处理。我正在使用 socket.io、NodeJS 服务器和 Redis.io

如何使用socket.io在节点js的右侧显示发送消息并在左侧显示接收消息

如何使用 Socket.io 在一条消息中发送两个变量?

socket.io 下的可靠消息传递?

如何使用 socket io 和 node express 发送个人消息

如何使用nodejs socket.io向特定房间中的用户发送打字警报和消息