我正在为客户创建一个SPA,我想在用户点击“登录”按钮后创建一个新的Websocket。我遇到的问题是,如果在初始页面加载时完成,我只能正确创建Websocket。
例如,以下代码可以正常创建Websocket:
<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>
但是,当我尝试通过单击事件创建Websocket时,它不会被创建:
<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>
控制台中没有显示错误,我的服务器在使用第二个代码段时也没有确认连接尝试。