button单击dynamic创buildWebSocket

我正在为客户端创build一个SPA,在用户点击“login”button后,我想创build一个新的WebSocket。 我遇到的问题是,我只能得到正确的创buildWebSocket,如果它是在初始页面加载完成的。

例如,下面的代码可以正确地创buildWebsocket:

<script src="socket.io.js"></script> <script> var pass; var socket = {}; socket = io('https://my.server.here', { query: "pass=mypasswordhere" }); socket.on('error', function(err){ console.log('Connection Failed: ' + err); }); socket.on('chat message', function (data) { console.log('data: ' + data); socket.emit('my other event', { my: 'data' }); }); </script> 

但是,当我尝试创buildWebSocket作为单击事件的结果,它不会被创build:

 <html> <head> <script src="socket.io.js"></script> <script> var pass; var socket = {}; function connect() { passInput = document.getElementById("password"); pass = passInput.value; socket = io('https://my.server.here', { query: "pass=" + pass }); socket.on('error', function(err){ console.log('Connection Failed: ' + err); }); socket.on('chat message', function (data) { console.log('data: ' + data); socket.emit('my other event', { my: 'data' }); }); } </script> </head> <body> <form> <input type="password" id="password"> <button onclick="connect()">Connect</button> </form> </body> </html> 

在控制台中没有显示错误,我的服务器在使用第二个代码片段时也不会确认连接尝试。