Remove dependency on a global socket and address `pad.socket` instead.
parent
6bbc32a19f
commit
003c2a59aa
|
@ -25,12 +25,20 @@ $(window).bind("load", function()
|
||||||
getCollabClient.windowLoaded = true;
|
getCollabClient.windowLoaded = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Dependency fill on init. This exists for `pad.socket` only.
|
||||||
|
// TODO: bind directly to the socket.
|
||||||
|
var pad = undefined;
|
||||||
|
function getSocket() {
|
||||||
|
return pad && pad.socket;
|
||||||
|
}
|
||||||
|
|
||||||
/** Call this when the document is ready, and a new Ace2Editor() has been created and inited.
|
/** Call this when the document is ready, and a new Ace2Editor() has been created and inited.
|
||||||
ACE's ready callback does not need to have fired yet.
|
ACE's ready callback does not need to have fired yet.
|
||||||
"serverVars" are from calling doc.getCollabClientVars() on the server. */
|
"serverVars" are from calling doc.getCollabClientVars() on the server. */
|
||||||
function getCollabClient(ace2editor, serverVars, initialUserInfo, options)
|
function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad)
|
||||||
{
|
{
|
||||||
var editor = ace2editor;
|
var editor = ace2editor;
|
||||||
|
pad = _pad; // Inject pad to avoid a circular dependency.
|
||||||
|
|
||||||
var rev = serverVars.rev;
|
var rev = serverVars.rev;
|
||||||
var padId = serverVars.padId;
|
var padId = serverVars.padId;
|
||||||
|
@ -81,7 +89,7 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options)
|
||||||
|
|
||||||
$(window).bind("unload", function()
|
$(window).bind("unload", function()
|
||||||
{
|
{
|
||||||
if (socket)
|
if (getSocket())
|
||||||
{
|
{
|
||||||
setChannelState("DISCONNECTED", "unload");
|
setChannelState("DISCONNECTED", "unload");
|
||||||
}
|
}
|
||||||
|
@ -111,7 +119,7 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options)
|
||||||
|
|
||||||
function handleUserChanges()
|
function handleUserChanges()
|
||||||
{
|
{
|
||||||
if ((!socket) || channelState == "CONNECTING")
|
if ((!getSocket()) || channelState == "CONNECTING")
|
||||||
{
|
{
|
||||||
if (channelState == "CONNECTING" && (((+new Date()) - initialStartConnectTime) > 20000))
|
if (channelState == "CONNECTING" && (((+new Date()) - initialStartConnectTime) > 20000))
|
||||||
{
|
{
|
||||||
|
@ -295,7 +303,7 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options)
|
||||||
|
|
||||||
function sendMessage(msg)
|
function sendMessage(msg)
|
||||||
{
|
{
|
||||||
socket.json.send(
|
getSocket().json.send(
|
||||||
{
|
{
|
||||||
type: "COLLABROOM",
|
type: "COLLABROOM",
|
||||||
component: "pad",
|
component: "pad",
|
||||||
|
@ -337,7 +345,7 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options)
|
||||||
{
|
{
|
||||||
if (window.console) console.log(evt);
|
if (window.console) console.log(evt);
|
||||||
|
|
||||||
if (!socket) return;
|
if (!getSocket()) return;
|
||||||
if (!evt.data) return;
|
if (!evt.data) return;
|
||||||
var wrapper = evt;
|
var wrapper = evt;
|
||||||
if (wrapper.type != "COLLABROOM") return;
|
if (wrapper.type != "COLLABROOM") return;
|
||||||
|
@ -442,7 +450,7 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options)
|
||||||
userInfo.userId = userId;
|
userInfo.userId = userId;
|
||||||
userSet[userId] = userInfo;
|
userSet[userId] = userInfo;
|
||||||
tellAceActiveAuthorInfo(userInfo);
|
tellAceActiveAuthorInfo(userInfo);
|
||||||
if (!socket) return;
|
if (!getSocket()) return;
|
||||||
sendMessage(
|
sendMessage(
|
||||||
{
|
{
|
||||||
type: "USERINFO_UPDATE",
|
type: "USERINFO_UPDATE",
|
||||||
|
|
|
@ -185,7 +185,7 @@ function handshake()
|
||||||
//find out in which subfolder we are
|
//find out in which subfolder we are
|
||||||
var resource = loc.pathname.substr(1, loc.pathname.indexOf("/p/")) + "socket.io";
|
var resource = loc.pathname.substr(1, loc.pathname.indexOf("/p/")) + "socket.io";
|
||||||
//connect
|
//connect
|
||||||
socket = io.connect(url, {
|
socket = pad.socket = io.connect(url, {
|
||||||
resource: resource,
|
resource: resource,
|
||||||
'max reconnection attempts': 3
|
'max reconnection attempts': 3
|
||||||
});
|
});
|
||||||
|
@ -474,7 +474,7 @@ var pad = {
|
||||||
|
|
||||||
pad.collabClient = getCollabClient(padeditor.ace, clientVars.collab_client_vars, pad.myUserInfo, {
|
pad.collabClient = getCollabClient(padeditor.ace, clientVars.collab_client_vars, pad.myUserInfo, {
|
||||||
colorPalette: pad.getColorPalette()
|
colorPalette: pad.getColorPalette()
|
||||||
});
|
}, pad);
|
||||||
pad.collabClient.setOnUserJoin(pad.handleUserJoin);
|
pad.collabClient.setOnUserJoin(pad.handleUserJoin);
|
||||||
pad.collabClient.setOnUpdateUserInfo(pad.handleUserUpdate);
|
pad.collabClient.setOnUpdateUserInfo(pad.handleUserUpdate);
|
||||||
pad.collabClient.setOnUserLeave(pad.handleUserLeave);
|
pad.collabClient.setOnUserLeave(pad.handleUserLeave);
|
||||||
|
|
Loading…
Reference in New Issue