从客户端创建套接字 IO 通道



我是Nodejs和Socketio的新手。我想做如下事情。

-> 创建一个侦听 Web 浏览器指定的通道的 socket.io/node.js 服务器。->服务器端脚本将消息推送到特定通道。

(我已经创建了一个服务器,这是代码。这只会发出两个消息。对所有连接的客户端执行操作和消息传递)

//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 服务器内部没有定义任何通道。但是它们是由客户端(浏览器中的js)定义的,消息传递通过服务器端脚本发送到特定的通道(例如使用cURL的php)。

抱歉,如果之前有人问过这个问题,我确实搜索过,找不到任何有用的东西。

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

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

重要的是要意识到房间是服务器端的东西。因此,如果要从客户端向聊天室发送消息,则必须向服务器发送消息(或请求)并传递聊天室名称。

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

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

最新更新