首页 > 解决方案 > Socket.io 与 url 的基本网络套接字连接?

问题描述

我的客户端正在向此 URL 发出 WebSocket 请求:ws://localhost:3000/feed/XBTMUR

在此处输入图像描述

在我的服务器中,我有运行 Express 的 NodeJ。我想使用 Socket.io 来监听连接到这个 URL 的客户端并定期发送 feed 数据。我试过这个,但它不工作:

var app = require('../app');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);
/**
 * Listen on provided port, on all network interfaces.
 */

var io  = require('socket.io')(server);
var feed =
    io.of('/feed/XBTMUR').on('connection', function (socket) {

        socket.emit('news', { hello: 'world' });
        socket.on('my other event', function (data) {
            console.log(data);
        });
    });

io.on('connection', function(socket) {
    console.log('a user connected, id ' + socket.id);
    socket.on('disconnect', function() {
        console.log('a user disconnected, id '  + socket.id);
    })
})
setInterval(()=>{
    io.sockets.emit('this', { receivers: 'everyone'});
},1000)

server.listen(port);

客户端没有使用 Socket io。

标签: javascriptnode.jssocketswebsocketsocket.io

解决方案


我在阅读文档时觉得实现是错误的。

var feed = io.of('/feed')     // `/feed` is the namespace
.on('connection', function (socket) {

    socket.to('XBTMUR', { hello: 'world' });  // `XBTMUR` is the room / socket id

});

希望这可以帮助。


推荐阅读