如何在socket.io中获取唯一的客户端ID?

时间:2017-07-31 10:28:23

标签: node.js express socket.io client-server

在我的代码'main.js'中我试图打印客户端的套接字ID。当我将客户端连接到我的服务器'main.js'时,代码不会在控制台或浏览器中打印任何内容。

服务器端代码(main.js):

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var port = 8000;
server.listen(port)

app.get('/',function(req,res){
    res.send({name:ID});
});

var ID;
io.on('connection',function(socket){
        ID = socket.id;
        console.log('client id - '+ID);     
});

1 个答案:

答案 0 :(得分:1)

看起来像一个小错误。套接字io服务器事件不是connections(复数),而是connect / connectionSee docs

这是一个有效的例子:

<强> server.js

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var port = 8000;
server.listen(port)

app.get('/',function(req,res){
    res.sendFile(__dirname + '/index.html');
});

io.on('connection',function(socket){
  ID = socket.id;
  console.log('client id - '+ socket.id);     
})

<强>的index.html

<!doctype html>  
<html lang="en">  
<head></head>
<body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>    
    <script>  
        var socket = io.connect('http://localhost:8000');
        socket.on('connect', function(data) {
            console.log('socket connected')
         });
    </script>        
</body>
</html> 

我可以确认这在服务器和客户端都有效。