Javascript 使用Socket.io将客户端连接到服务器

Javascript 使用Socket.io将客户端连接到服务器,javascript,html,node.js,websocket,socket.io,Javascript,Html,Node.js,Websocket,Socket.io,我对node.js和它的插件比较陌生,所以这可能是一个初学者的问题 我正在尝试在Web服务器上获取一个简单的HTML页面,并将其连接到使用websocket.io运行node.js的其他服务器 我的代码如下所示: 客户端 <script src="socket.io/socket.io.js"></script> <script> // Create SocketIO instance, connect var socket = new io

我对node.js和它的插件比较陌生,所以这可能是一个初学者的问题

我正在尝试在Web服务器上获取一个简单的HTML页面,并将其连接到使用websocket.io运行node.js的其他服务器

我的代码如下所示:

客户端

<script src="socket.io/socket.io.js"></script>
<script>
    // Create SocketIO instance, connect

    var socket = new io.Socket();

    socket.connect('http://127.0.0.1:8080'); 

    // Add a connect listener
    socket.on('connect',function() {
      console.log('Client has connected to the server!');
    });
    // Add a connect listener
    socket.on('message',function(data) {
      console.log('Received a message from the server!',data);
    });
    // Add a disconnect listener
    socket.on('disconnect',function() {
      console.log('The client has disconnected!');
    });

    // Sends a message to the server via sockets
    function sendMessageToServer(message) {
      socket.send(message);
    };
</script>

我整天都在干这个。有什么帮助吗?

您是否尝试过不从相对URL加载socket.io脚本

您正在使用:

<script src="socket.io/socket.io.js"></script>
你应该试试:

<script src="http://localhost:8080/socket.io/socket.io.js"></script>
切换
localhost:8080
,选择适合您当前设置的选项


此外,根据您的设置,从不同域加载客户端页面(同源策略)时,与服务器的通信可能会出现一些问题。这可以通过不同的方式克服(不在本答案的范围内,google/SO it)。

您需要确保在链接到socket.io之前添加正斜杠:

<script src="/socket.io/socket.io.js"></script>

这应该可以解决您的问题。

我使用了io.connect(),它工作正常,但为什么不需要指定地址呢?如果未指定任何地址,它是否会自动连接到localhost?@MattiaSurricchio:如果不提供地址,它会假定该地址是窗口的位置(即html文件从何处提供),因此如果您连接到为页面提供服务的同一服务器,则可以忽略该地址。文档:为了简化对其他几个脚本的引用,可以使用
socket.connect('http://127.0.0.1:8080');
<script src="http://localhost:8080/socket.io/socket.io.js"></script>
socket.connect('http://localhost:8080');
<script src="/socket.io/socket.io.js"></script>
var socket = io.connect()