Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过按键连接到节点服务器?_Javascript_Node.js_Xmlhttprequest - Fatal编程技术网

Javascript 如何通过按键连接到节点服务器?

Javascript 如何通过按键连接到节点服务器?,javascript,node.js,xmlhttprequest,Javascript,Node.js,Xmlhttprequest,我可以通过按下按钮连接到带有socket.io的nodejs服务器吗?例如,我得到了我的页面file:///home...site/index.html和在我的本地计算机上运行的服务器,例如localhost:8080。调用函数时,是否可以使用xmlhttprequest或其他方式从文件连接到服务器?怎样有链接/教程吗?我在GitHub上有一个非常简单的socket.io示例: 更新本例中的index.html页面,如下所示: <!doctype html> <html>

我可以通过按下按钮连接到带有socket.io的nodejs服务器吗?例如,我得到了我的页面
file:///home...site/index.html
和在我的本地计算机上运行的服务器,例如
localhost:8080
。调用函数时,是否可以使用xmlhttprequest或其他方式从文件连接到服务器?怎样有链接/教程吗?

我在GitHub上有一个非常简单的socket.io示例: 更新本例中的index.html页面,如下所示:

<!doctype html>
<html>
    <head>
        <script src='/socket.io/socket.io.js'></script>
        <script>
          var socket;
          function makeConnection() {
            socket = io();
            socket.on('welcome', function(data) {
              addMessage(data.message);
              // Respond with a message including this clients' id sent from the server
              socket.emit('i am client', {data: 'foo!', id: data.id});
            });
            socket.on('polo', function(data) {
              addMessage(data.message);
            });
            alert('connected.');
          }

          function addMessage(message) {
            var text = document.createTextNode(message),
                el = document.createElement('li'),
                messages = document.getElementById('messages');
            el.appendChild(text);
            messages.appendChild(el);
          }

          function marco() {
            socket.emit('marco');
          }
        </script>
    </head>
    <body>
        <button onclick="makeConnection()">Connect</button>
        <button onclick="marco()">Marco!</button>
        <ul id='messages'></ul>
    </body>
</html>

无功插座;
函数makeConnection(){
socket=io();
socket.on('welcome',函数(数据){
addMessage(data.message);
//使用从服务器发送的包含此客户端id的消息进行响应
emit('i am client',{data:'foo!',id:data.id});
});
socket.on('polo',函数(数据){
addMessage(data.message);
});
警报(“已连接”);
}
函数addMessage(消息){
var text=document.createTextNode(消息),
el=document.createElement('li'),
messages=document.getElementById('messages');
el.附件(文本);
附加子对象(el);
}
函数marco(){
socket.emit('marco');
}
连接
马可!
    这将在用户单击“连接”时建立socket.io连接。然后你可以点击马可!发送消息并接收Polo!答复


    谢谢您的回复,但这不是我想要的。当你到达页面时,你的站点会立即将你连接到节点服务器,我想在单击按钮时连接到它。这很容易实现。我更新了我的答案。@Edvin好吧,现在你刚刚添加了另一个emit,但你仍然在
    var socket=io()
    连接。我真正的问题是,我想从另一个页面连接到服务器,该页面在地址栏中没有URL,而是通过javascript事件的其他方式到达服务器,例如按下按钮。如果我们在makeConnection()函数中移动该行,但仍然全局声明它,该怎么办?这基本上就是你想要做的,对吗?