我正在使用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);
答案 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);