SlideShare ist ein Scribd-Unternehmen logo
1 von 45
ShareJS
Collaborative Anything
Ace



           ShareJS Client
      OT




           ShareJS Server   Redis
      OT
Ace


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT




                        ShareJS Server   Redis
                   OT
Ace


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT




                        ShareJS Server   Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT




                        ShareJS Server            Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT




                        ShareJS Server            Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT

                 Socket.io


                        ShareJS Server            Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT

                 Socket.io
                                REST

                        ShareJS Server            Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT

                 Socket.io          No stre
                                REST       aming


                        ShareJS Server            Redis
                   OT
[{i:"H", p:0}]    Client   Server
      [{i:"i", p:1}]

Ace
       ShareJS Client



Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace
       ShareJS Client



Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client



Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10


Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10




       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10

                        op:[{d:"i", p:1}], v:11

       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10

                        op:[{d:"i", p:1}], v:11
                                            op:null, v:11
       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10

                        op:[{d:"i", p:1}], v:11
                                            op:null, v:11
       ShareJS Server
                        op:[{d:"H”, p:0}], v:12
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10

                        op:[{d:"i", p:1}], v:11
                                            op:null, v:11
       ShareJS Server
                        op:[{d:"H”, p:0}], v:12
                                            op:null, v:12
Ace



           ShareJS Client
      OT

  Socket.io
                   REST

           ShareJS Server   Redis
      OT
Ace



           ShareJS Client
      OT

  Socket.io
                   REST
                             Redis
           ShareJS Server
      OT                    Memory
Ace



           ShareJS Client
      OT

  Socket.io
                   REST
                             Redis
           ShareJS Server
      OT                    Memory


  % bin/sharejs
Ace



           ShareJS Client
      OT

  Socket.io
                   REST

           ShareJS Server    Memory
      OT


              Your Web App
Ace



           ShareJS Client
      OT




           ShareJS Server
      OT
Operational
OT   =
         Transformation
{
Operational
OT   =
         Transformation
{
                =
          What happens if 2 people
           edit at the same time?
Operational
               OT   =
                        Transformation
{
                               =
Set of types
                         What happens if 2 people
                          edit at the same time?
Operational
                 OT     =
                            Transformation
{
                                   =
               • Text
Set of types
                             What happens if 2 people
                              edit at the same time?
Operational
                 OT      =
                             Transformation
{
                                    =
               • Text
Set of types
                              What happens if 2 people
               • Rich text     edit at the same time?
Operational
                 OT      =
                             Transformation
{
                                    =
               • Text
Set of types
                              What happens if 2 people
               • Rich text     edit at the same time?
               • JSON
Operational
                 OT     =
                             Transformation
{
                                    =
               • Text
Set of types
                              What happens if 2 people
               • Rich text     edit at the same time?
               • JSON
               • Your data
Operational
                 OT     =
                             Transformation
{
                                    =
               • Text
Set of types
                              What happens if 2 people
               • Rich text     edit at the same time?
               • JSON
               • Your data

                             Only type right now
Operational
                  OT     =
                               Transformation
Client                                                   Server

 v10
                             ‘ACD’
                                                         v10
        op:[{d:‘AC’, p:0}]           op:[{i:‘B’, p:1}]



                   ‘D’               ‘ABCD’

         op:[{i:‘B’, p:0}]
  v11
Operational
                  OT     =
                               Transformation
Client                                                   Server

 v10
                             ‘ACD’
                                                         v10
        op:[{d:‘AC’, p:0}]           op:[{i:‘B’, p:1}]



                   ‘D’               ‘ABCD’
                                     op:[{d:‘A’, p:0},
         op:[{i:‘B’, p:0}]
  v11                                    {d:‘C’, p:1}]
                                                         v11
Operational
                  OT     =
                               Transformation
Client                                                   Server

 v10
                             ‘ACD’
                                                         v10
        op:[{d:‘AC’, p:0}]           op:[{i:‘B’, p:1}]



                   ‘D’               ‘ABCD’
                                     op:[{d:‘A’, p:0},
         op:[{i:‘B’, p:0}]
  v11                                    {d:‘C’, p:1}]
                             ‘BD’                        v11
Ace



           ShareJS Client
      OT

  Socket.io
                   REST
                             Redis
           ShareJS Server
      OT                    Memory
Ace



src/client          ShareJS Client
               OT

             Socket.io
               Socket.io
                                 REST
                                           Redis
                         ShareJS Server
                    OT                    Memory
Ace



src/client          ShareJS Client
               OT

             Socket.io




             Socket.io         REST
src/server                             Redis
                    ShareJS Server
               OT                     Memory
Ace



src/client             ShareJS Client


              Socket.io

                            Operational
src/types         OT     =
                           Transformation

              Socket.io           REST
src/server                                Redis
                       ShareJS Server
                                         Memory
Really beta warning
Really beta warning
• No authentication
• Need a rich text OT type
• Could be way faster
 • Saves a snapshot with every op
 • O(N ) with the number of people typing in a
         2

    doc at the same time
• Redis requires history to all fit in RAM. Mongodb?
• Faye > SocketIO?
• No undo support, even though thats really easy.
Really beta warning
• No authentication
• Need a rich text OT type
• Could be way faster
 • Saves a snapshot with every op
 • O(N ) with the number of people typing in a
         2

    doc at the same time
• Redis requires history to all fit in RAM. Mongodb?
• Faye > SocketIO?
• No undo support (should be easy!)
Really beta warning
• No authentication
• Need a rich text OT type
• Could be way faster
 • Saves a snapshot with every op
 • O(N ) with the number of people typing in a
         2

    doc at the same time
• Redis requires history to all fit in RAM. Mongodb?
• Faye > SocketIO?
• No undo support (should be easy!)
Really beta warning
• No authentication
• Need a rich text OT type
• Could be way faster
 • Saves a snapshot with every op
 • O(N ) with the number of people typing in a
         2

    doc at the same time
• Redis requires history to all fit in RAM. Mongodb?
• Faye > SocketIO?
• No undo support (should be easy!)
Help out!

• http://sharejs.org/
• Join the mailing list (link from the website)
• ShareJSLib on twitter
• Most importantly: Contribute code!
 • https://github.com/josephg/ShareJS

Weitere ähnliche Inhalte

Andere mochten auch

Everyday English
Everyday EnglishEveryday English
Everyday Englishlady3140
 
CLOrox fy05_q3_spmt
CLOrox   fy05_q3_spmtCLOrox   fy05_q3_spmt
CLOrox fy05_q3_spmtfinance48
 
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015John Meijering ✔
 
PM processing 03 2015(eng)
PM processing 03 2015(eng)PM processing 03 2015(eng)
PM processing 03 2015(eng)Vadim Andreev
 
Mahabharat Winning Strategies
Mahabharat Winning StrategiesMahabharat Winning Strategies
Mahabharat Winning StrategiesRajesh Goyal
 
広島アニメ関連イベントカレンダー(仮)はじめました
広島アニメ関連イベントカレンダー(仮)はじめました広島アニメ関連イベントカレンダー(仮)はじめました
広島アニメ関連イベントカレンダー(仮)はじめましたYoshitake Takata
 
Disobedience Invitation
Disobedience InvitationDisobedience Invitation
Disobedience Invitationtianvh
 
autozone Bylaws4
autozone  Bylaws4autozone  Bylaws4
autozone Bylaws4finance46
 
omnicare annual reports 2000
omnicare annual reports  2000omnicare annual reports  2000
omnicare annual reports 2000finance46
 
liz claiborne AR_2004
liz claiborne  AR_2004liz claiborne  AR_2004
liz claiborne AR_2004finance48
 
molson coors brewing COORS_AR2001
molson coors brewing  COORS_AR2001molson coors brewing  COORS_AR2001
molson coors brewing COORS_AR2001finance46
 
Fetish Furniture Portfolio
Fetish Furniture  PortfolioFetish Furniture  Portfolio
Fetish Furniture PortfolioCharles Powers
 
autozone CorporateGovernancePrinciples1208
autozone  CorporateGovernancePrinciples1208autozone  CorporateGovernancePrinciples1208
autozone CorporateGovernancePrinciples1208finance46
 
molson coors brewing ProxyStatement1
molson coors brewing   ProxyStatement1molson coors brewing   ProxyStatement1
molson coors brewing ProxyStatement1finance46
 

Andere mochten auch (16)

Everyday English
Everyday EnglishEveryday English
Everyday English
 
CLOrox fy05_q3_spmt
CLOrox   fy05_q3_spmtCLOrox   fy05_q3_spmt
CLOrox fy05_q3_spmt
 
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015
 
PM processing 03 2015(eng)
PM processing 03 2015(eng)PM processing 03 2015(eng)
PM processing 03 2015(eng)
 
Mahabharat Winning Strategies
Mahabharat Winning StrategiesMahabharat Winning Strategies
Mahabharat Winning Strategies
 
2009 Lenca Update
2009 Lenca Update2009 Lenca Update
2009 Lenca Update
 
広島アニメ関連イベントカレンダー(仮)はじめました
広島アニメ関連イベントカレンダー(仮)はじめました広島アニメ関連イベントカレンダー(仮)はじめました
広島アニメ関連イベントカレンダー(仮)はじめました
 
Disobedience Invitation
Disobedience InvitationDisobedience Invitation
Disobedience Invitation
 
autozone Bylaws4
autozone  Bylaws4autozone  Bylaws4
autozone Bylaws4
 
omnicare annual reports 2000
omnicare annual reports  2000omnicare annual reports  2000
omnicare annual reports 2000
 
liz claiborne AR_2004
liz claiborne  AR_2004liz claiborne  AR_2004
liz claiborne AR_2004
 
molson coors brewing COORS_AR2001
molson coors brewing  COORS_AR2001molson coors brewing  COORS_AR2001
molson coors brewing COORS_AR2001
 
Fetish Furniture Portfolio
Fetish Furniture  PortfolioFetish Furniture  Portfolio
Fetish Furniture Portfolio
 
Clipagem
ClipagemClipagem
Clipagem
 
autozone CorporateGovernancePrinciples1208
autozone  CorporateGovernancePrinciples1208autozone  CorporateGovernancePrinciples1208
autozone CorporateGovernancePrinciples1208
 
molson coors brewing ProxyStatement1
molson coors brewing   ProxyStatement1molson coors brewing   ProxyStatement1
molson coors brewing ProxyStatement1
 

Kürzlich hochgeladen

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 

Kürzlich hochgeladen (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 

ShareJS launch talk

  • 2. Ace ShareJS Client OT ShareJS Server Redis OT
  • 3. Ace [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT ShareJS Server Redis OT
  • 4. Ace [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT ShareJS Server Redis OT
  • 5. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT ShareJS Server Redis OT
  • 6. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT ShareJS Server Redis OT
  • 7. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT Socket.io ShareJS Server Redis OT
  • 8. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT Socket.io REST ShareJS Server Redis OT
  • 9. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT Socket.io No stre REST aming ShareJS Server Redis OT
  • 10. [{i:"H", p:0}] Client Server [{i:"i", p:1}] Ace ShareJS Client Socket.io ShareJS Server
  • 11. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace ShareJS Client Socket.io ShareJS Server
  • 12. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client Socket.io ShareJS Server
  • 13. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 Socket.io ShareJS Server
  • 14. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io ShareJS Server
  • 15. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 ShareJS Server
  • 16. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 op:[{d:"i", p:1}], v:11 ShareJS Server
  • 17. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 op:[{d:"i", p:1}], v:11 op:null, v:11 ShareJS Server
  • 18. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 op:[{d:"i", p:1}], v:11 op:null, v:11 ShareJS Server op:[{d:"H”, p:0}], v:12
  • 19. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 op:[{d:"i", p:1}], v:11 op:null, v:11 ShareJS Server op:[{d:"H”, p:0}], v:12 op:null, v:12
  • 20. Ace ShareJS Client OT Socket.io REST ShareJS Server Redis OT
  • 21. Ace ShareJS Client OT Socket.io REST Redis ShareJS Server OT Memory
  • 22. Ace ShareJS Client OT Socket.io REST Redis ShareJS Server OT Memory % bin/sharejs
  • 23. Ace ShareJS Client OT Socket.io REST ShareJS Server Memory OT Your Web App
  • 24. Ace ShareJS Client OT ShareJS Server OT
  • 25. Operational OT = Transformation {
  • 26. Operational OT = Transformation { = What happens if 2 people edit at the same time?
  • 27. Operational OT = Transformation { = Set of types What happens if 2 people edit at the same time?
  • 28. Operational OT = Transformation { = • Text Set of types What happens if 2 people edit at the same time?
  • 29. Operational OT = Transformation { = • Text Set of types What happens if 2 people • Rich text edit at the same time?
  • 30. Operational OT = Transformation { = • Text Set of types What happens if 2 people • Rich text edit at the same time? • JSON
  • 31. Operational OT = Transformation { = • Text Set of types What happens if 2 people • Rich text edit at the same time? • JSON • Your data
  • 32. Operational OT = Transformation { = • Text Set of types What happens if 2 people • Rich text edit at the same time? • JSON • Your data Only type right now
  • 33. Operational OT = Transformation Client Server v10 ‘ACD’ v10 op:[{d:‘AC’, p:0}] op:[{i:‘B’, p:1}] ‘D’ ‘ABCD’ op:[{i:‘B’, p:0}] v11
  • 34. Operational OT = Transformation Client Server v10 ‘ACD’ v10 op:[{d:‘AC’, p:0}] op:[{i:‘B’, p:1}] ‘D’ ‘ABCD’ op:[{d:‘A’, p:0}, op:[{i:‘B’, p:0}] v11 {d:‘C’, p:1}] v11
  • 35. Operational OT = Transformation Client Server v10 ‘ACD’ v10 op:[{d:‘AC’, p:0}] op:[{i:‘B’, p:1}] ‘D’ ‘ABCD’ op:[{d:‘A’, p:0}, op:[{i:‘B’, p:0}] v11 {d:‘C’, p:1}] ‘BD’ v11
  • 36. Ace ShareJS Client OT Socket.io REST Redis ShareJS Server OT Memory
  • 37. Ace src/client ShareJS Client OT Socket.io Socket.io REST Redis ShareJS Server OT Memory
  • 38. Ace src/client ShareJS Client OT Socket.io Socket.io REST src/server Redis ShareJS Server OT Memory
  • 39. Ace src/client ShareJS Client Socket.io Operational src/types OT = Transformation Socket.io REST src/server Redis ShareJS Server Memory
  • 41. Really beta warning • No authentication • Need a rich text OT type • Could be way faster • Saves a snapshot with every op • O(N ) with the number of people typing in a 2 doc at the same time • Redis requires history to all fit in RAM. Mongodb? • Faye > SocketIO? • No undo support, even though thats really easy.
  • 42. Really beta warning • No authentication • Need a rich text OT type • Could be way faster • Saves a snapshot with every op • O(N ) with the number of people typing in a 2 doc at the same time • Redis requires history to all fit in RAM. Mongodb? • Faye > SocketIO? • No undo support (should be easy!)
  • 43. Really beta warning • No authentication • Need a rich text OT type • Could be way faster • Saves a snapshot with every op • O(N ) with the number of people typing in a 2 doc at the same time • Redis requires history to all fit in RAM. Mongodb? • Faye > SocketIO? • No undo support (should be easy!)
  • 44. Really beta warning • No authentication • Need a rich text OT type • Could be way faster • Saves a snapshot with every op • O(N ) with the number of people typing in a 2 doc at the same time • Redis requires history to all fit in RAM. Mongodb? • Faye > SocketIO? • No undo support (should be easy!)
  • 45. Help out! • http://sharejs.org/ • Join the mailing list (link from the website) • ShareJSLib on twitter • Most importantly: Contribute code! • https://github.com/josephg/ShareJS

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n