如何更改'旧套接字中已弃用的set()和get()输入输出的代码

How to change 'deprecated set() and get() in old socket.io code?

本文关键字:set 代码 输入输出 get 何更改 套接字      更新时间:2023-09-26

我是node/socket的新手。用一个旧的教程制作一个聊天室。

下面是socket.js部分:

exports.initialize = function (server) {
  io = io.listen(server);
  var chatInfra = io.of("/chat_infra")
      .on("connection", function(socket){
        socket.on("set_name", function (data) {
          socket.set('nickname', data.name, function () {
            socket.emit('name_set', data);
            socket.send(JSON.stringify({type:'serverMessage',
              message:'Welcome to the most interesting ' +
              'chat room on earth!'}));
            socket.broadcast.emit('user_entered', data);
          });
        });
      });
  var chatCom = io.of("/chat_com")
      .on("connection", function (socket) {
        socket.on('message', function (message) {
          message = JSON.parse(message);
          if (message.type == "userMessage") {
            socket.get('nickname', function (err, nickname) {
              message.username = nickname;
              socket.broadcast.send(JSON.stringify(message));
              message.type = "myMessage";
              socket.send(JSON.stringify(message));
            });
          }
        });
      });
}

但是我得到

TypeError: Object #<Socket> has no method 'set'
    at Socket.<anonymous> (/home/me/awesome-chat/routes/sockets.js:9:18)

我使用的是"socket.io": "^1.4.8",我知道set()是不赞成的,所以我试图改变设置部分使用.use()作为每个文档的例子,但我没有运气,并得到:

TypeError: Object #<Socket> has no method 'use'

.get()部分也是如此。所以我真的很困惑,谢谢你的提示。

Socket#setSocket#get不是Socket的方法。IO,所以不能用。然后必须删除这些方法。

你可以像这样赋值

插座。昵称= 'Hola'并按原样读取

要在代码中获取该值,可以这样做

  .on("connection", function (socket) {
        socket.on('message', function (message) {
          message = JSON.parse(message);
          if (message.type == "userMessage") {
           if(socket && socket.nickname){
              message.username = socket.nickname;
              socket.broadcast.send(JSON.stringify(message));
              message.type = "myMessage";
              socket.send(JSON.stringify(message));
          };
          }
        });
      });

详情请参阅Socket.IO API

这里是更新后的Socket.io