Javascript 在node.js中与特定用户聊天
这是我与所选用户进行私人聊天的代码。它不像私人消息那样向所选用户发送消息 服务器端:Javascript 在node.js中与特定用户聊天,javascript,jquery,html,node.js,socket.io,Javascript,Jquery,Html,Node.js,Socket.io,这是我与所选用户进行私人聊天的代码。它不像私人消息那样向所选用户发送消息 服务器端: var fs = require('fs'), http = require('http'), sio = require('socket.io'); var server = http.createServer( function(req, res) { if (req.url === '/index') { fs.readFile('./inde
var fs = require('fs'),
http = require('http'),
sio = require('socket.io');
var server = http.createServer( function(req, res) {
if (req.url === '/index') {
fs.readFile('./index.html', function(err, page) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(page);
res.end();
});
}
else if (req.url === '/karthick') {
fs.readFile('./karthick.html', function(err, page) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(page);
res.end();
});
}
else if (req.url === '/raj') {
fs.readFile('./raj.html', function(err, page) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(page);
res.end();
});
}
else if (req.url === '/Harendra') {
fs.readFile('./Harendra.html', function(err, page) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(page);
res.end();
});
}
else if (req.url === '/send') {
fs.readFile('./sendingmsg.html', function(err, page) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(page);
res.end();
});
}
else {
res.writeHead(301,
{Location: '/index'}
);
res.end();
}
});
server.listen(8000, function() {
console.log('Server listening at http://192.168.1.16/8000');
});
io = sio.listen(server);
// store messages
var messages = [];
io.sockets.on('connection', function(socket){
socket.on('chat message', function(msg){
console.log('Received: ', msg);
messages.push(msg);
io.sockets.emit('chat message', msg);
});
messages.forEach(function(msg) {
socket.send(msg);
})
});
客户端:发送
<!DOCTYPE html>
<html>
<body>
<title>send message</title>
<ul id="messages"></ul>
<form action="">
<select>
<option id="kar" value="karthick">karthick</option>
<option id="raj" value="Raj">Raj</option>
<option id="haren" value="Harendra">Harendra</option>
</select><br />
<textarea id="m" rows="4" cols="50">
</textarea><br/>
<button id=btn>Send</button>
</form>
<script src="https://cdn.socket.io/socket.io-1.1.0.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io.connect('http://192.168.1.21:8000');
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('disconnect', function() {
$('#messages').append('<li>Disconnected</li>');
});
</script>
</body>
</html>
发送消息
卡迪希
拉吉
哈伦德拉
发送
var socket=io.connect('http://192.168.1.21:8000');
$('form')。提交(函数(){
emit('chat message',$('#m').val());
$('m').val('');
返回false;
});
socket.on('disconnect',function()){
$(“#消息”).append(“已断开连接” ”);
});
收到的客户端:1
<!DOCTYPE html>
<html>
<body>
<title>Users</title>
Welcome Harendra
<ul id="messages"></ul>
<script src="/socket.io/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
$(function(){
var socket = io.connect();
socket.on('connect', function () {
socket.on('message', function(message) {
$('#messages').append($('<li>').text(message));
});
socket.on('disconnect', function() {
$('#messages').append('<li>Disconnected</li>');
});
});
});
</script>
</body>
</html>
使用者
欢迎哈伦德拉
$(函数(){
var socket=io.connect();
socket.on('connect',function(){
socket.on('message',函数(message){
$(“#消息”).append($(“”).text(消息));
});
socket.on('disconnect',function()){
$(“#消息”).append(“ 已断开连接” ”);
});
});
});
当我选择用户发送私人消息时,它不工作。请帮我找个人您的服务器套接字实现中缺少一些逻辑 您不应该使用
io.sockets.emit(…)
将消息发送到所有具有io.sockets.emit(…)
的客户端,而应该将其发送到特定的文件室-socket.to(…).emit(…)
请看一下这张照片
以下是抽象逻辑:
socket.join('roomName');
socket.to('roomName').emit('chat message', msg);