gpt4 book ai didi

node.js - 结合 Nodejs Net 套接字和 Socket IO

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:50 24 4
gpt4 key购买 nike

我有一个 Windows 应用程序(作为 Windows 服务构建在 C# 上),它将数据发送到 NodeJs Net Socket,因此 Socket.IO 有助于使 Web 应用程序成为实时应用程序,而无需重新加载。在 Net Socket 从 C# 接收数据的同时,我如何允许 Socket.IO 将接收到的数据从 NodeJs Net Socket 流式传输到 Web 应用程序?

因此,在从 C# 接收套接字数据的代码中:

var net = require('net');
net.createServer(function (socket) {
socket.on('data', function (data) {
broadcast(socket.name + "> \n" + data + " \n", socket);
socket.end("<EOF>");

//send data to web interface , does it work that way?
//SomeFooToSendDataToWebApp(Data)
});
});

对于 Socket.IO,我有这些行,我无法真正弄清楚如何处理它们:

//Should it listen to net socket or web socket?
server.listen(8080);

// Loading socket.io
var io = require('socket.io').listen(server);

// It works but only for one request
io.sockets.on('connection', function (socket2) {
socket2.emit('message' , 'Message Text');
});

P.S:我是nodejs和socket.io的新手,所以如果可能的话也解释一下他们的行为。

编辑 1:我的前端 Javascript 以检查它是否有任何问题:

  //for now it listens to http port , which Socket.IO listens to
var socket = io.connect('http://localhost:8080');
var myElement = document.getElementById("news");
socket.on('message', function(message) {
document.getElementById("news").innerHTML = message;
})

编辑2:遵循了jfriend00的答案,因为我之前的代码似乎试图将消息发送到未知的套接字,我只是添加了这个,因为我需要将它发送到所有连接的客户端,所以只有一行修复了它!

 socket.on('data', function (data) {
broadcast(socket.name + "> \n" + data + " \n", socket);
socket.end("<EOF>");

//send data to web interface , does it work that way?
//The Added code here:
io.emit('message',data + " more string");

});

最佳答案

很难准确说出你在问什么。

如果您想要将一些数据发送到所有连接的 socket.io 客户端(无论数据来自何处),那么您可以通过以下方式执行此操作:

io.emit("someMessage", dataToSend);

如果您只想发送到一个特定的已连接客户端,那么您必须以某种方式获取该特定客户端的 socket 对象,然后执行以下操作:

socket.emit("someMessage", dataToSend);

如何获取所需连接客户端的特定套接字对象完全取决于您的应用程序如何工作以及您如何知道它是哪个客户端。服务器上的每个套接字连接都有一个与之关联的socket.id。在某些情况下,服务器代码使用该 id 来跟踪给定的客户端(例如将 id 放入 session 中或将其保存在其他服务器端数据中)。如果您有套接字的 ID,则可以使用 .to() 方法访问套接字,例如:

io.to(someId).emit("someMessage", dataToSend);
<小时/>

您的问题询问如何通过普通 TCP 套接字发送从某些 C# 服务接收的数据。至于将其发送到套接字客户端,数据来自何处或如何接收它根本不重要。一旦你在某个 Javascript 变量中获得了数据,无论它来自文件、http 请求、C# 服务中传入的 TCP 连接等,数据都是一样的......这只是你想要发送的数据。

关于node.js - 结合 Nodejs Net 套接字和 Socket IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48265224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com