ShareJS示例不起作用

时间:2013-03-10 04:32:51

标签: operational-transform

我正在尝试使用Sharejs创建一个协作文本编辑器,但我在一开始就遇到了一些问题。

我从“入门”页面开始。我运行npm install share,然后使用./node_modules/share/bin/exampleserver运行示例服务器。这很好。

然而,我尝试按照“运行服务器”部分中的步骤创建自己的小应用程序。我写了app.js文件和建议的html,当我尝试运行它时,浏览器控制台发出404错误,说它无法找到socket.io.js:

GET http://localhost:8000/socket.io/socket.io.js 404 (Not Found)

然后我反复收到此错误:

GET http://localhost:8000/test?VER=8&MODE=init&zx=ktil5643g6cw&t=1 404 (Not Found) 

是否有人有任何建议或想法导致这种情况?我知道它可以工作,因为我之前提到的预配置示例在本地运行很好,只是在我尝试创建新应用程序时,我不能正确配置。

感谢。

1 个答案:

答案 0 :(得分:4)

我可以看到以下更改日志:

client.open('hello', 'text', function(doc, error) {
  // ...
});

变为

client.open('hello', 'text', function(error, doc) {
  // ...
});

示例仍包含过时的回调function(doc, error)。此外,将客户端上的URL更改为http://example.com:8000/channel

在我的案例中,最终版本是:

服务器

var connect = require('./node_modules/connect'),
    sharejs = require('./node_modules/share').server;

var server = connect(
    connect.logger(),
    connect.static(__dirname + '/public')
);
var options = {db:{type:'none'}}; // See docs for options. {type: 'redis'} to enable persistance.

// Attach the sharejs REST and Socket.io interfaces to the server
sharejs.attach(server, options);

server.listen(8000, function () {
    console.log('Server running at http://127.0.0.1:8000/');
});

<强>客户端

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <script src="http://ajaxorg.github.com/ace/build/src/ace.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="/channel/bcsocket.js"></script>
    <script src="/share/share.js"></script>
    <script src="/share/ace.js"></script>
    <script>
        $(document).ready(function() {
            var editor = ace.edit("editor");

            sharejs.open('hello', 'text', 'http://localhost:8000/channel', function (error, doc) {
                doc.attach_ace(editor);
            });
        });
    </script>
    <style>
        #editor {
            width: 200px;
            height: 100px;
        }
    </style>
</head>
<body>
<div id="editor"></div>
</body>
</html>