【发布时间】:2017-08-17 07:39:03
【问题描述】:
如何在服务器上运行多个套接字事件/socket.on()?例如。
var express = require('express'),
app = express();
server = require('http').createServer(app);
io = require('socket.io').listen(server)
server.listen(8080);
io.sockets.on('connection', function(socket) {
socket.on('node1', function(data){
io.sockets.emit('node1 message', data);
});
socket.on('node2', function(data){
io.sockets.emit('node2 message', data);
});
});
当我如下运行客户端时,消息会被广播。
socket.emit('node1','Hello World');
但是在 node2 上,什么都没有通过。
socket.emit('node2','Hello World');
谢谢!
对不起,
这是我在客户端运行的(发送数据)。
<!DOCTYPE html>
<html>
<head>
<title>nodes_update</title>
</head>
<body>
<script src="http://192.168.0.1:8080/socket.io/socket.io.js"></script>
<script type="text/JavaScript">
var socket = io('http://192.168.0.1:8080/');
socket.emit('<?php echo $_REQUEST["node"] ?>','<?php echo $_REQUEST["node_message"] ?>');
</script>
</body>
</html>
在接收端。
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
</body>
<script src="http://192.168.0.1:8080/socket.io/socket.io.js"></script>
<script type="text/JavaScript">
var socket = io('http://192.168.0.1:8080/');
socket.on('<?php echo $_REQUEST["node"] ?>', function(data) {
// plot_data(data);
});
</script>
</html>
<?php echo $_REQUEST["node"] ?> //is the node number ex "node1" or "node2"
<?php echo $_REQUEST["node_message"] ?> //is the data of the node ex "Temp-90".
http://192.168.0.1/show_node_data.php?node=node1+message&node_message=Temp-90
这是绘制多个节点数据
谢谢!
【问题讨论】:
-
无法复制。您的客户端代码是什么样的?
-
嗨,在页面 node_data.php
-
请将其添加到您的问题中。此外,我没有看到两种类型的消息(
node1 message和node2 message)的侦听器。 -
$_REQUEST变量解析成什么? -
当服务器接收到一个名为
node2的事件时,它会广播一个名为node2 message的事件。您需要在客户端中为该事件指定一个特定的侦听器,我不确定您是否有。