我正在使用套接字将数据发送到特定的客户端,但是在客户端,我无法获取数据。
我正在此行发送数据
io.to("user1@example.com").emit('new_msg', {msg: 'hello'});
并使用此代码在客户端上接收
socket.on("new_msg", function(data) {
console.log("here")
alert(data.msg);
})
这是我的完整代码,JS和HTML文件。
JS:
var io = require('socket.io')();
io.sockets.on('connection', function(client) {
console.log('Client connected...', client.id);
client.on('join', function(data) {
console.log(data.email);
});
client.on('messages', function(data) {
client.emit('broad', data);
io.to("user1@example.com").emit('new_msg', {msg: 'hello'});
});
})
io.listen(3000);
HTML:
<!doctype html>
<html lang="en">
<head>
</head>
<body>
<h1>Hello World!</h1>
<div id="future"></div>
<form id="form" id="chat_form">
<input id="chat_input" type="text">
<input type="submit" value="Send">
</form>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.dev.js"></script>
</body>
</html>
<script>
var socket = io.connect('http://127.0.0.1:3000');
socket.on('connect', function(data) {
socket.emit('join', {email: "user1@example.com"});
});
socket.on('broad', function(data) {
$('#future').append(data+ "<br/>");
});
socket.on("new_msg", function(data) {
console.log("here")
alert(data.msg);
})
$('form').submit(function(e){
e.preventDefault();
var message = $('#chat_input').val();
socket.emit('messages', {email: "user1@example.com"});
});
</script>
答案 0 :(得分:2)
问题是您从未加入会议室,而是在此处向该会议室发送消息
io.to("user1@example.com").emit('new_msg', {msg: 'hello'});
内部加入方法让客户加入房间
client.on('join', function(data) {
console.log(data.email);
client.join(data.email)
});