javascript - 无法在 socket.io Node.JS 中将数据从一个客户端发送到另一个客户端

标签 javascript node.js sockets

我有两个客户端可以通过 socket.io 交换一些数据。我也有一个服务器。我需要做的是我想通过套接字将数据从客户端 1 发送到客户端 2,但我无法弄清楚如何实现它。请注意,客户端 1 和客户端 2 是不同的 html 页面。

Server.JS

var express = require('express');
var app = express();
var fs = require('fs');
var path = require('path');

var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 3000;
var ip=process.env.IP||"192.168.1.5";
app.use(express.static(__dirname));
server.listen(port,ip, function () {
  console.log('Server listening at port %d ', port);
});
app.get('/index', function(req, res) {
  res.sendFile(path.join(__dirname,'/test.html'));
})
app.get('/index1', function(req, res) {
  res.sendFile(path.join(__dirname,'/test1.html'));
})

io.on('connection', function (socket) {
   socket.on('broadcast', function (message) {
            console.log(message);




            socket.broadcast.emit('message', message);
            });
            console.log("connected");

 });

Client1.JS

 <!doctype html>
<html lang="en">
<head>
</head>
<body>
 <script src="/socket.io/socket.io.js"></script>
 <script >
var socket = io.connect();
socket.emit('broadcast',"Broadcasting Message");
socket.on('message', function (data) {

     alert(data)
});
 </script>
  </body>

Client2.JS

 <!doctype html>
<html lang="en">
<head>
</head>
<body>
 <script src="/socket.io/socket.io.js"></script>
 <script >
var socket = io.connect();


socket.on('message', function (data) {

     alert(data)
    //socket.emit('message',"Hello world");
});
 </script>
  </body>

最佳答案

好的,这是我在本地所做的,您可以根据需要进行更改。

server.js

var io = require('socket.io')(80);

io.on('connection', function (socket) {
 socket.on('broadcast', function (message) {
        console.log(message);
        socket.broadcast.emit('message', message);
        });
        console.log("connected");

});

client1.js

var socket = io.connect('ws://127.0.0.1');
socket.emit('broadcast',"Broadcasting Message");
socket.on('message', function (data) {
     $('#client1').html(data);
});

client2.js

 var socket = io.connect('ws://127.0.0.1');
 socket.on('message', function (data) {
     $('#client2').html(data);
});

index.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src='https://code.jquery.com/jquery-1.12.4.min.js'></script>
    <script type="text/javascript" src="/socket.io/socket.io.js"></script>
    <script type="text/javascript" src="client1.js"></script>
    <script type="text/javascript" src="client2.js"></script>
</head>
<body>
        <div> <h1> CLIENT 1 </h1><div id="client1"></div></div>
        <div> <h1> CLIENT 2 </h1><div id="client2"></div></div>
</body>
</html>

在终端上运行node server.js并重新加载页面后,您将看到client2将附加广播消息 html

关于javascript - 无法在 socket.io Node.JS 中将数据从一个客户端发送到另一个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43454134/

相关文章:

javascript - 如何更新网页的一部分而不重定向到新页面? Express、NodeJS、 Mongoose

javascript - NodeJ。 module.export 出现问题;这不是函数错误

linux - 套接字绑定(bind)返回错误 63

java - 在 Java 中,如果我将 DatagramPackets 留在 DatagramSocket 中会发生什么?

javascript - 使用时间刻度为第一个和最后一个数据点创建填充

javascript - 具有整数键的稀疏 Javascript 数组是否仍按键排序?

javascript - Node ,js中的mongodb导出错误

Windows 对每台机器同时打开的套接字/连接数的限制

javascript - Azure Blob 存储请求的资源错误上不存在 Access-Control-Allow-Origin header

javascript - 将 object.constructor 与其构造函数和 instanceof 进行比较有什么区别?