gpt4 book ai didi

node.js - 从客户端创建套接字 IO channel

转载 作者:搜寻专家 更新时间:2023-11-01 00:02:55 25 4
gpt4 key购买 nike

我是 Nodejs 和 Socketio 的新手。我想做类似下面的事情。

-> 创建一个 socket.io/node.js 服务器来监听网络浏览器指定的 channel 。-> 服务器端脚本将消息推送到特定 channel 。

(我已经创建了一个服务器,这里是代码。这只是向所有连接的客户端发送两个消息。action 和 messege)

//start code    
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, url = require('url')

app.listen(8080);

function handler (req, res) {
// parse URL
var requestURL = url.parse(req.url, true);

// if there is a message, send it
if(requestURL.query.message)
sendMessage(decodeURI(requestURL.query.action), decodeURI(requestURL.query.message));

// end the response
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end("");
}

function sendMessage(action, message) {
io.sockets.emit('notification', {'action': action, 'message' : message});
}

所以基本上 Socket.io 服务器内部没有定义任何 channel 。但它们是由客户端定义的(浏览器中的 js),消息由服务器端脚本(如使用 cURL 的 php)发送到特定 channel

抱歉,如果之前有人问过这个问题,我进行了搜索但找不到任何有用的信息。

最佳答案

我对你的问题有点困惑。通过 channel ,您是指 socket.io 房间吗? https://github.com/LearnBoost/socket.io/wiki/Rooms
房间是一组客户端,可以使用以下命令向房间内的所有客户端发送消息:

io.sockets.in('room').emit('event_name', data)

重要的是要认识到房间是服务器端的东西。所以,如果你想从客户端向房间发送消息,你必须向服务器发送消息(或请求)并传递房间名称。

此外,您的处理程序函数作为 HTTP 端点公开有点不寻常。如果您的客户端已经有 socket.io 连接,那么将其作为 socket.io 消息发送会更容易。

如果这不能回答您的问题,您能否也发布您的客户端代码?也许这有助于了解我您想要实现的目标。

关于node.js - 从客户端创建套接字 IO channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546095/

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