Здравствуйте. Понимаю - тема устарела, но все же. У меня похожий код. Нужно переменную socket сделать глобальной. Прошу помощи...
"use strict";
(function()
{
	// ======== global vars from config ========   
	var srvaddress = url_base + 'include/socket/';//url каталога
	var startserveraddress = srvaddress+'wsstart.php';
	var chataddr = 'ws://localhost:8889';
	// ======== private vars ========
	var socket;
	var xhttp;
	////////////////////////////////////////////////////////////////////////////
	var init = function()
	{
		//https://learn.javascript.ru/websockets Docs
		socket = new WebSocket(chataddr + '/' + cookies + '/516616546465464');
		socket.onopen = connectionOpen; //Соединение установлено
		socket.onmessage = messageReceived; //Получены данные
		//socket.onerror = errorOccurred; 
		//socket.onopen = connectionClosed;
		document.getElementById("msg-send").onclick = function()
		{
			//sendMessage();
			messagesend();
		};
	};
	function messagesend()
	{
	}
	function connectionOpen()
	{
		socket.send("{\"act\":\"start\", \"msg\":\"Connection with "+chataddr+". Подключение установлено обоюдно, отлично!\"}");
	}
	function messageReceived(e)
	{
		var json = eval("(" + e.data + ")");
	}
	function connectionClose() {
		socket.close();
	}
	return{
		// ---- onload event ----
		load : function () {
			window.addEventListener('load', function () {
				init();
			}, false);
		}
	}
})().load();