如何在服务器上运行多个socket事件/ 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
这是绘制多个节点数据
谢谢!
答案 0 :(得分:0)
好的我记录服务器使用mysql进行节点名称查找,然后将数据发送到找到节点名称的页面,否则不发送任何内容。
server.js
var express = require('express'),
app = express();
server = require('http').createServer(app);
io = require('socket.io').listen(server)
server.listen(8080);
var mysql = require('mysql');
var connection = mysql.createConnection('mysql://moo:password@localhost/node_db');
connection.connect();
io.sockets.on('connection', function(socket) {
socket.on('send message', function(data){
var token = data.token;
var message = data.message;
var queryToken = 'SELECT COUNT(*) as num FROM `node_token` where node_token = ' + connection.escape(token);
connection.query(queryToken, function(err, rows, fields) {
if (err) throw err;
//console.log(rows[0].num);
//console.log(token);
//console.log(message);
var node_name = rows[0].num;
if(node_name != 0) {
console.log("Node name found in DB");
io.sockets.emit(token, message);
}else{
console.log("Node name not found in db");
}
});
});
});
数据库表;
+----+------------+---------------+
| id | node_token | node_owner_id |
+----+------------+---------------+
| 2 | node1 | 1 |
| 3 | node2 | 1 |
+----+------------+---------------+
2 rows in set (0.00 sec)
发送数据页&#34; node_update.php?node = node1&amp; node_message = temp-90&#34;
<!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 token = <?php echo $_REQUEST["node"]; ?>;
var message = <?php echo $_REQUEST["node_message"]; ?>;
var socket = io('http://192.168.0.1:8080/');
socket.emit('send message',{token:token, message:message});
</script>
</body>
</html>
收到数据页&#34; node_get_data.php?node = node1&#34;
<!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);
});
</script>
</html>
这样我可以使用无限制的节点,只需将它们添加到数据库中。
感谢所有帮助!!