Socket.io - 在服务器和客户端之间同步数据
Socket.io - sync data between server and clients
第一次使用 node js,我正在编写一个供我和朋友之间私人使用的应用程序,我的朋友可以随时加入。
是否可以让服务器有一个对象数组a.e。 'franksLibrary' 有 n 项
并且用户能够阅读和修改'franksLibrary'?
目前我所做的是在用户网页中设置 'franksLibrary' 并通过 socket.io
发送 franksLibrary 和所有其他变量进行同步
index.js是服务器代码,
index.html 是传递给用户的东西
例子index.js
var http = require('http').createServer(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
socket.on('chat message', function(msg, usr){
io.emit('chat message',msg, usr);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
示例index.html:
var franksLibrary = [{
"book1":"title of book 1"
},
{
"book2":"title of book 2"
}];
socket.on('chat message', function(franksL /*,more variables*/){
franksLibrary = franksL
});
synch = function(){
socket.emit('chat message', franksLibrary /*,more variables*/);
}
removeBook = function(object, from){
var a = object;
var index = from.indexOf(a);
from.splice(index,1);
synch();
}
将 franksLibrary
从 index.html
移动到 index.js
。然后,在服务器的 connection
回调中,将 chat message
和数据一起发送到新连接的客户端。
index.js
var franksLibrary = [{
"book1": "title of book 1"
},
{
"book2": "title of book 2"
}];
io.on('connection', function(socket) {
socket.emit('chat message', franksLibrary);
socket.on('chat message', function(data) {
franksLibrary = data;
socket.broadcast.emit('chat message', franksLibrary);
});
});
index.html
// initialize variable
var franksLibrary = [];
const socket = io();
socket.on('chat message', function(franksL) {
franksLibrary = franksL;
});
const synch = function(){
socket.emit('chat message', franksLibrary);
};
const removeBook = function(object, from) {
var a = object;
var index = from.indexOf(a);
from.splice(index,1);
synch();
};
第一次使用 node js,我正在编写一个供我和朋友之间私人使用的应用程序,我的朋友可以随时加入。
是否可以让服务器有一个对象数组a.e。 'franksLibrary' 有 n 项
并且用户能够阅读和修改'franksLibrary'?
目前我所做的是在用户网页中设置 'franksLibrary' 并通过 socket.io
发送 franksLibrary 和所有其他变量进行同步index.js是服务器代码, index.html 是传递给用户的东西
例子index.js
var http = require('http').createServer(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
socket.on('chat message', function(msg, usr){
io.emit('chat message',msg, usr);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
示例index.html:
var franksLibrary = [{
"book1":"title of book 1"
},
{
"book2":"title of book 2"
}];
socket.on('chat message', function(franksL /*,more variables*/){
franksLibrary = franksL
});
synch = function(){
socket.emit('chat message', franksLibrary /*,more variables*/);
}
removeBook = function(object, from){
var a = object;
var index = from.indexOf(a);
from.splice(index,1);
synch();
}
将 franksLibrary
从 index.html
移动到 index.js
。然后,在服务器的 connection
回调中,将 chat message
和数据一起发送到新连接的客户端。
index.js
var franksLibrary = [{
"book1": "title of book 1"
},
{
"book2": "title of book 2"
}];
io.on('connection', function(socket) {
socket.emit('chat message', franksLibrary);
socket.on('chat message', function(data) {
franksLibrary = data;
socket.broadcast.emit('chat message', franksLibrary);
});
});
index.html
// initialize variable
var franksLibrary = [];
const socket = io();
socket.on('chat message', function(franksL) {
franksLibrary = franksL;
});
const synch = function(){
socket.emit('chat message', franksLibrary);
};
const removeBook = function(object, from) {
var a = object;
var index = from.indexOf(a);
from.splice(index,1);
synch();
};