Javascript 从socket.io中的客户端连接向服务器发送JSON数据(查询)

Javascript 从socket.io中的客户端连接向服务器发送JSON数据(查询),javascript,socket.io,ejs,Javascript,Socket.io,Ejs,当建立套接字连接时,我试图将一个JSON对象从active.ejs(客户端)发送到index.js(服务器) 但是,发送到服务器的套接字对象的查询参数不是我尝试在服务器中记录套接字对象时传递的JSON对象(它是一个空对象) 活动。ejs <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Active</title> <sc

当建立套接字连接时,我试图将一个JSON对象从
active.ejs
(客户端)发送到
index.js
(服务器)

但是,发送到服务器的套接字对象的查询参数不是我尝试在服务器中记录套接字对象时传递的JSON对象(它是一个空对象)

活动。ejs

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Active</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="http://localhost:4000/socket.io/socket.io.js"></script>
  </head>
  <body>
    <script>var socket = io.connect('http://localhost:4000/tune-in', {query: "<%= user_info %>"}); %></script>
    <p>
      Welcome,
      <%= user_info.uri %>
    </p>
  </body>
</html>
  app.get('/tune-in', function(req, res){
    res.render('active', {user_info: user_data});
  });
以下是
user\u info
对象的外观-

{ country: 'US',
  display_name: 'My name',
  email: 'myname@gmail.com',
  external_urls: { spotify: 'https://open.spotify.com/user/randomnums' },
  followers: { href: null, total: 3 },
  href: 'https://api.spotify.com/v1/users/randomnums',
  id: 'randomstring',
  images:
   [ { height: null,
       url: 'myimg',
       width: null } ],
  product: 'premium',
  type: 'user',
  uri: 'spotify:user:randomstring' }
query:
      { '[object Object]': 'undefined',
        EIO: '3',
        transport: 'polling',
        t: 'LrEFaoW' } },
index.js-上面的JSON数据应该记录在哪里

var io = socket(server);

io.on('connection', function(socket){
   console.log('Made socket connection', socket);
});
当我记录套接字对象时,查询参数看起来像-

{ country: 'US',
  display_name: 'My name',
  email: 'myname@gmail.com',
  external_urls: { spotify: 'https://open.spotify.com/user/randomnums' },
  followers: { href: null, total: 3 },
  href: 'https://api.spotify.com/v1/users/randomnums',
  id: 'randomstring',
  images:
   [ { height: null,
       url: 'myimg',
       width: null } ],
  product: 'premium',
  type: 'user',
  uri: 'spotify:user:randomstring' }
query:
      { '[object Object]': 'undefined',
        EIO: '3',
        transport: 'polling',
        t: 'LrEFaoW' } },
我的预期用途是能够做一些事情,比如
socket.broadcast.emit('users',data)index.js
中的code>,其中
data
是一个JSON对象,包含
user\u info
的几个字段(或查询对象)

在active.ejs中,我想做如下操作-

<script>
  var socket = io.connect('http://localhost:4000/tune-in', {query: "<%= user_info %>"}); %>
  var active = document.getElementById('active');
  socket.on('users', function(data){
    active.innerHTML += "<li><em>" + data.display_name + " is connected" + "</em></li>";
  });
</script>

var socket=io.connect('http://localhost:4000/tune-在“,{query:”})中;%>
var active=document.getElementById('active');
socket.on('users',函数(数据){
active.innerHTML+=“
  • ”+data.display_name+”已连接“+”
  • ”; });
    编辑:上述可能的重复项并没有解决我的问题,即用
    {query:}
    替换
    {query:}
    并没有解决问题。相反,我在客户端出现了错误,说
    UnexpectedIdentifier


    EDIT2错误发生在
    {query:”}
    双引号中
    请尝试将您的EJS模板更改为以下内容:

    <script>
      var socket = io.connect('http://localhost:4000/tune-in', {
        query: <%- JSON.stringify(user_info) %>
      });
    </script>
    
    
    var socket=io.connect('http://localhost:4000/tune-在,{
    查询:
    });
    

    注意,
    尝试将EJS模板更改为以下内容:

    <script>
      var socket = io.connect('http://localhost:4000/tune-in', {
        query: <%- JSON.stringify(user_info) %>
      });
    </script>
    
    
    var socket=io.connect('http://localhost:4000/tune-在,{
    查询:
    });
    
    注意