Php 私人消息的问题
请注意:我知道这可能是其他问题的重复,但我希望获得代码方面的帮助 我正在尝试为我的社交网络构建聊天功能。我使用了node.js和socket.io…这段代码的问题是,消息将传递给每个连接的用户,而不仅仅是目标用户…这段代码的源代码来自Newboston教程。。。 到目前为止,我已经像这样建造了它: client.php 我想添加以下功能: *(a) *由于它是一个社交网络,它应该能够为私人聊天、betn 2登录用户提供服务。。。 (b) 消息应该在接收者稍后重新登录后由接收者接收 我已经在google n上搜索了很多页面,听说房间是我的目标。但是作为nodejs中的一个noob,idk如何实现房间以使私人消息传递成为可能。。。Php 私人消息的问题,php,node.js,socket.io,Php,Node.js,Socket.io,请注意:我知道这可能是其他问题的重复,但我希望获得代码方面的帮助 我正在尝试为我的社交网络构建聊天功能。我使用了node.js和socket.io…这段代码的问题是,消息将传递给每个连接的用户,而不仅仅是目标用户…这段代码的源代码来自Newboston教程。。。 到目前为止,我已经像这样建造了它: client.php 我想添加以下功能: *(a) *由于它是一个社交网络,它应该能够为私人聊天、betn 2登录用户提供服务。。。 (b) 消息应该在接收者稍后重新登录后由接收者接收 我已经在goo
如果有人能帮我编写代码,甚至让我走上正确的道路,在这里我可以学习在node.js中编写代码,并为初学者提供简单的教程,这真是一个gr8帮助!!先走一步 看起来,应用程序中的每个用户都应该有唯一id 逻辑 1.您必须在输出\u userId上从后端(服务器端)发出事件
对于用户3来说,它应该是输出的\u 3javascript是客户端的,如果您计划发布它或将其从本地主机上取下,或者为了更好的实践,请学习使用PHP进行数据库查询,并在类似jQuery的东西中使用AJAX请求。。你可以研究“帮我编码”。所以这不是免费的编码服务。除此之外,询问有关教程或其他非网站资源的提示对于SO来说是离题的。在这里阅读更多:Magnus,说“帮助我编写代码”并不一定意味着我要求ppl为我编写代码..我所需要的只是帮助..我不要求任何人重新编写代码..我已经有代码要构建..而且,上面的代码基于一组教程,仅此而已。。我不是在问关于非现场主题的提示:)这很难接受:“cud help me code It”除了你在问代码以外的任何其他方式。“我可以在哪里学习node.js中的代码,并为初学者提供简单的教程”是要求提供非现场教程,不是吗?如果您有问题的nodejs代码,请在问题中发布相关部分,并告诉我们您面临的具体问题。现在,您的问题是如何获得broad.tnq fr ur响应…我的疑问是:我为每个获得frm php…Bt的用户都有唯一的用户id,我如何将其放入node.js,以及如何将用户id分配给相应的聊天室?node对此没有什么不同,它的socket.io在node中与在php中相同。您可以这样做=>当您的用户从客户端发送消息时,获取发送消息的用户的用户ID,消息将发送给该用户,已发送的消息,并使用它们将数据存储在数据库中,并向其他用户发出套接字事件,正如我在上面的回答中告诉您的,因此user2作为接收器的代码是:socket.emit('msg',output_2_id)?从客户端获取output2\u id的地方??不,应该是套接字。emit(output2\u id,'message')第一个参数是客户端正在侦听的变量。哦,我将尝试使用n rply…tq fr ur response
<div class="chat" hidden>
<textarea class="chat-name"><?php echo escape($data->username); ?></textarea>
<div class="chat-messages">
<?php
$chtrndr = $cht->renderchats(escape($data->id));
foreach ($chtrndr as $chtrndrs) {
echo '<div>' . $chtrndrs['m_from'] . ': ' . $chtrndrs['m_text'] . '</div><br>';
}
?>
</div>
<textarea class="chat-textarea" placeholder="Type your message"></textarea>
<div class="chat-status">Status:<span>Idle</span></div>
</div>
<!-- <script src="/socket.io/socket.io.js"></script> -->
<script src="http://127.0.0.1:8080/socket.io/socket.io.js"></script>
<script src="server.js"></script>
<script>
(function(){
var getNode = function(s) {
return document.querySelector(s);
},
//get required nodes
status = getNode('.chat-status span'),
messages = getNode('.chat-messages'),
textarea = getNode('.chat-textarea'),
chatName = getNode('.chat-name'),
statusDefault = status.textContent,
setStatus = function(s) {
status.textContent = s;
if(s!==statusDefault)
{
var delay = setTimeout(function(){
setStatus(statusDefault);
clearInterval(delay);
},3000);
}
};
setStatus('testing');
try {
var socket = io.connect('http://127.0.0.1:8080');
}
catch(e)
{
//set status to warn user
}
if(socket!==undefined)
{
//listen for output
socket.on('output',function(data){
if(data.length)
{
//loop through results
for(var x=0;x<data.length;x=x+1)
{
var message = document.createElement('div');
message.setAttribute('class','chat-message');
message.textContent = data[x].m_from + ': ' + data[x].m_text;
//append
messages.appendChild(message);
messages.insertBefore(message, messages.firstChild);
}
}
});
//listen for a status
socket.on('status',function(data){
setStatus((typeof data === 'object') ? data.message : data);
if(data.clear === true)
{
textarea.value = '';
}
});
//listen for keydown
textarea.addEventListener('keydown',function(event){
var self = this,
fname = <?php echo escape($_SESSION['user']); ?>,
tname = <?php echo $data->id; ?>;
if(event.which === 13 && event.shiftKey === false) {
socket.emit('input', {m_from:fname, m_to:tname, m_text:self.value});
event.preventDefault();
}
});
}
})();
</script>
var client = require('socket.io').listen(8080).sockets;
var express = require('express');
var app = express();
var mysql = require('mysql');
var path = require('path');
var dbconn = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'test'
});
app.use(express.static(path.resolve(__dirname, './css/')));
app.get('/',function(req,res){
res.sendFile(__dirname + '/index.html');
});
dbconn.connect(function(err){
if(err){
console.log('Database connection error');
}else{
console.log('Database connection successful');
}
client.on('connection',function(socket){
console.log('Data received from Db');
sendStatus = function(s){
socket.emit('status',s);
};
//wait for input
socket.on('input',function(data){
var fname = data.m_from,
tname = data.m_to,
m_text = data.m_text,
whitespacePattern = /^\s*$/;
if(whitespacePattern.test(m_text))
{
sendStatus('message is required');
}
else
{
var record = { m_from: fname, m_to:tname, m_text: m_text };
dbconn.query('INSERT INTO messages SET ?', record, function(err,res){
if(err) throw err;
client.emit('output',[data]);
sendStatus({
message: "message sent",
clear: true
});
});
}
});
});
});