簡體   English   中英

socket io-向單個套接字發送消息

[英]socket io - Emitting message to individual socket

它最初是一個lynda.com教程項目

我已經試着嘗試並嘗試使它起作用。 我希望能夠將消息發送到特定的聊天成員(將消息發送到一個套接字)。

我看着這個,但仍然無法讓我工作。 Socket.IO-如何獲取已連接套接字/客戶端的列表?

我已經盡了最大努力來解決這個問題。

第一個文件:

var io = require('socket.io'), connect = require('connect'), chatter = require('./chatter.js');

var app = connect().use(connect.static('public')).listen(process.env.PORT || 3000);
var chatRoom = io.listen(app);

chatter.setSockets(chatRoom.sockets);

chatRoom.sockets.on("connection", function(socket){
 chatter.connectChatter({
  socket: socket,
  username: socket.id
 });
});

第二檔:

     var allSockets = null;
        var members = [];

        exports.setSockets = function(sockets){
         allSockets = sockets;
        }

        exports.connectChatter = function(config){
         var exists = false;
         var self;
         for(var i = 0; i < members.length; i++){
          if(members[i].userName == config.username){
           exists = true;
           break;
          }
         }
         if(!exists){
          self = {userName:config.username};
          members.push(self);
         }

         config.socket.emit("welcome",{user:self});
         allSockets.emit("getUsers",{users:members});

        config.socket.on("chat", function(data){

    allSockets.emit("chat", {message:data.message}); //works just fine
             sockets[socket].emit("chat", {message:data.message}); //WILL NOT WORK
             sockets[0].emit("chat", {message:data.message}); //WILL NOT WORK
             socket[0].emit("chat", {message:data.message}); //WILL NOT WORK
             allSockets[socket].emit("chat", {message:data.message}); //WILL NOT WORK
             allSockets[0].emit("chat", {message:data.message}); //WILL NOT WORK

             allSockets.socket(0).emit('chat', {message:data.message}); //DOES NOTHING, BUT DOES NOT BREAK APP

請幫忙。 我敢肯定這是愚蠢或愚蠢的。 我對此很陌生。 我只是不知道語法是什么。

好吧,它工作了。 不知道為什么Lynda.com會采用這種編碼布局,而其他所有人似乎都采用io.sockets.socket樣式。

第一個文件:

var io = require('socket.io'), connect = require('connect'), chatter = require('./chatter.js');

var app = connect().use(connect.static('public')).listen(process.env.PORT || 3000);
var chatRoom = io.listen(app);

chatter.setSockets(chatRoom.sockets);

chatRoom.sockets.on("connection", function(socket){
chatter.addSocket(socket);
 chatter.connectChatter({
  socket: socket,
  username: socket.id
 });
});

第二檔:

var socketList = [];
exports.addSocket = function(s){
 socketList.push(s);
}

var allSockets = null;
        var members = [];

        exports.setSockets = function(sockets){
         allSockets = sockets;
        }

        exports.connectChatter = function(config){
         var exists = false;
         var self;
         for(var i = 0; i < members.length; i++){
          if(members[i].userName == config.username){
           exists = true;
           break;
          }
         }
         if(!exists){
          self = {userName:config.username};
          members.push(self);
         }

         config.socket.emit("welcome",{user:self});
         allSockets.emit("getUsers",{users:members});

        config.socket.on("chat", function(data){
        socketList[0].emit("chat", {message:data.message});
}

希望這對以后的人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM