socket.on没有监听事件

时间:2019-04-19 12:03:09

标签: node.js reactjs socket.io

我正在使用react.js,node.js和socket.io创建一个简单的私人和群聊应用程序。我已经在表单提交中发出了一个事件。在服务器和客户端,我监听了该事件。

它可以在服务器端正常运行,但是在客户端,它不监听事件。下面是我的客户端和服务器端代码:

服务器:

var users = {};
io.on('connection', function(socket){ 
    socket.on('user_email', (data) => {
        console.log('user_email event called!');
        users[data.email] = socket.id;
    });
    socket.on('sent_message',(data)=>{
        console.log('data is ',data);
    })
});

客户端:

import socket from '../../socket';

handleSubmit(e){
     e.preventDefault();
     let email = window.localStorage.getItem('email');      
     let message = this.state.message;
     if(message){
        socket.emit('sent_message',{email:email,message:message});
    }
    socket.on('sent_message',(data)=>{
        console.log('client side',data);
    })
}

socket.js

import socketIOClient from "socket.io-client";
import { CONFIG } from './config';

export default socketIOClient(CONFIG.API_BASE_URL);

1 个答案:

答案 0 :(得分:1)

在客户代码中,您拥有:

friend of friend

在服务器上,您有

DECLARE
   l_dest_lob     CLOB;
   l_src_blob     BLOB;
   l_dest_offset  INTEGER := 1;
   l_src_offset   INTEGER := 1;
   l_lang_context INTEGER;
   l_warning      INTEGER;
BEGIN
   dbms_lob.converttoclob(dest_lob     => l_dest_lob,
                          src_blob     => l_src_blob,
                          amount       => dbms_lob.blobmaxsize,
                          dest_offset  => l_dest_offset,
                          src_offset   => l_src_offset,
                          blob_csid    => nls_charset_id('WE8MSWIN1252'),
                          lang_context => l_lang_context,
                          warning      => l_warning);
END;

但是在您的服务器上,没有socket.emit('sent_message',{email:email,message:message}); // and socket.on('sent_message',(data)=>{ console.log('client side',data); }) ,因此您的客户端将永远不会收到任何东西。

尝试使用

socket.on('sent_message',(data)=>{
    console.log('data is ',data);
})

在服务器代码内部,在...emit('sent_message', ...)处理程序内部,而不是io.to(socket.id).emit('sent_message', data);