Javascript 在sockets.io中发送/接收数据
我正在学习节点和套接字,遇到了一个绊脚石。我的服务器运行正常,可以连接和断开用户,并将其名称添加到套接字中。我有它,所以当用户发送消息时,任何其他登录的人都会收到它,并显示在弹出警报中。我需要发送的不仅仅是像用户名这样的信息,还有可能更多的数据。我知道使用json是可能的,但如何将其包含在发送和接收的数据中?我已经包括了下面的代码。因此,我想在发送和接收数据时添加用户名,并将其显示在弹出框中,如“username sent this message…”它在console.log上工作 server.jsJavascript 在sockets.io中发送/接收数据,javascript,node.js,json,socket.io,Javascript,Node.js,Json,Socket.io,我正在学习节点和套接字,遇到了一个绊脚石。我的服务器运行正常,可以连接和断开用户,并将其名称添加到套接字中。我有它,所以当用户发送消息时,任何其他登录的人都会收到它,并显示在弹出警报中。我需要发送的不仅仅是像用户名这样的信息,还有可能更多的数据。我知道使用json是可能的,但如何将其包含在发送和接收的数据中?我已经包括了下面的代码。因此,我想在发送和接收数据时添加用户名,并将其显示在弹出框中,如“username sent this message…”它在console.log上工作 serve
var http = require('http');
var Static = require('node-static');
var app = http.createServer(handler);
var io = require('socket.io').listen(app);
var port = 8080;
var files = new Static.Server('./public');
function handler (request, response) {
request.on('end', function() {
files.serve(request, response);
}).resume();
}
var numUsers = 0;
io.on('connection', (socket) => {
var addedUser = false;
socket.on('add user', (username) => {
if (addedUser) return;
// we store the username in the socket session for this client
socket.username = username;
//addedUser = true;
++numUsers;
// echo globally (all clients) that a person has connected
//socket.broadcast.emit('user joined', {
// username: socket.username,
// numUsers: numUsers
console.log(username+' has logged on, now there are '+numUsers+' online');
});
//when receive new coors
socket.on('new_message', function (data) {
socket.broadcast.emit('new_message', data);
console.log(socket.username+' just sent '+data);
});
// when the user disconnects.. perform this
socket.on('disconnect', () => {
--numUsers;
console.log(socket.username+' has left, now there are '+numUsers+' online');
});
});
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example of Getting Current Position</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script> var username = prompt('What\'s your username?'); </script>
<script type="text/javascript">
socket = io.connect('/');
socket.emit('add user', username);
function sendmessage() {
var new_message = document.getElementById("new_message").value;
//alert (new_message);
socket.emit('new_message', new_message);
}
socket.on('new_message', function (data) {
//socket.broadcast.emit('new_message', data);
//console.log(data);
alert(data);
});
</script>
</head>
<body>
<button type="button" onclick="sendmessage()">Send message</button><BR><BR>
<input name="new_message" type="text" id="new_message" value=""><BR>
</body>
</html>
获取当前位置的示例
var username=prompt('您的用户名是什么?');
socket=io.connect('/');
emit('adduser',username');
函数sendmessage(){
var new_message=document.getElementById(“new_message”).value;
//警报(新消息);
发出('new_message',new_message');
}
socket.on('new_message',函数(数据){
//socket.broadcast.emit('new_message',data);
//控制台日志(数据);
警报(数据);
});
发送消息
经过大量阅读后,我做了如下更改:
index.html
function sendmessage() {
var new_message = document.getElementById("new_message").value;
var Details3 = {
username: username,
message: new_message
};
socket.emit('new_message', Details3);
function sendmessage() {
socket.emit('new_message', username , new_message);
}
server.js
socket.on('new_message', (data) => {
var New_Details = {
username: data.username,
message: data.message
};
socket.broadcast.emit('update_message', New_Details);
console.log(data.username + ' just wrote ' + data.message);
});
socket.on('new_message', (username , message) => {
socket.broadcast.emit('update_message', username , message);
console.log(username + ' just wrote ' + message);
});
回答这个问题太晚了,但是你可以不用json
index.html
function sendmessage() {
var new_message = document.getElementById("new_message").value;
var Details3 = {
username: username,
message: new_message
};
socket.emit('new_message', Details3);
function sendmessage() {
socket.emit('new_message', username , new_message);
}
server.js
socket.on('new_message', (data) => {
var New_Details = {
username: data.username,
message: data.message
};
socket.broadcast.emit('update_message', New_Details);
console.log(data.username + ' just wrote ' + data.message);
});
socket.on('new_message', (username , message) => {
socket.broadcast.emit('update_message', username , message);
console.log(username + ' just wrote ' + message);
});
我希望这会有帮助