josephg / josephg/ShareJS

Operation was rejected (seq but not src). Trying to rollback change locally.

Open
#379 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
5k
Forks
454
PR merge metrics
No merged PRs in 30d

Description

Hi everyone!

Trying to use ShareJs, but have a problem with submitOp.
Model change, but new value is not set in mongoDB.

I have a warning message:
"Operation was rejected (seq but not src). Trying to rollback change locally."

What am i doing wrong?

client:

``` javascript
var socket = new BCSocket('http://localhost:8002/channel', {reconnect: true});
var share = new sharejs.Connection(socket);

var doc = share.get('lists', '1433606385077');

doc.subscribe(function(){
console.log('onChange:', doc.getSnapshot());
});

doc.whenReady(function(){
console.log('onReady: ', doc.getSnapshot());
doc.submitOp([{p:['title', 4], si: 'test'}]);
});
```

server:

``` javascript

(function(){
var Duplex = require('stream').Duplex;
var browserChannel = require('browserchannel').server
var backend = require('livedb').client(require('livedb-mongo')(dbUrl));
var share = require('share').server.createClient({backend: backend});
var bodyParser = require('body-parser');
var core = require('express')();
var server = createServer();
var dbUrl = 'mongodb://localhost:27017/todoList'

core.use(bodyParser.json());
core.use(bodyParser.urlencoded({
extended: true
}));

core.use(function(req, res, next) {
var headers = {
'Cache-Control' : 'max-age:120'
};

if(req.headers.origin){
res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, X-PINGOTHER');
res.setHeader('Access-Control-Max-Age', 86400);
}

next();
});

var mongodb = require('mongodb').connect(dbUrl, function(err, db){
var usersAPI = new require('./api/users')(core, db);
var listsAPI = new require('./api/lists')(core, db, backend);

core.use(browserChannel({webserver: server}, function(client){
console.log('New session: ' + client.id +' from ' + client.address);
var stream = new Duplex({objectMode: true});

listsAPI(client);

stream._read = function() {};
stream._write = function(chunk, encoding, callback) {

if(client.state !== 'closed') {
client.send(chunk);
}
callback();
};

client.on('message', function(data) {
stream.push(data);
});

client.on('close', function(reason) {
stream.push(null);
});

stream.on('end', function() {
client.close();
});

return share.listen(stream);
}));
});

function createServer(){
return core.listen(8002, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Server started on', host + ':' + port);
});
}
})();
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.