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

我试图在Web服务器上获得一个简单的HTML页面,并将其连接到另一个运行 node 的服务器.js和websocket.伊奥.

我的代码如下所示:

Client

<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>

Serverside

// Require HTTP module (to start server) and Socket.IO
var http = require('http');
var io = require('socket.io');
var port = 8080;

// Start the server at port 8080
var server = http.createServer(function(req, res){ 
    // Send HTML headers and message
    res.writeHead(200,{ 'Content-Type': 'text/html' }); 
    res.end('<h1>Hello Socket Lover!</h1>');
});

server.listen(port);

// Create a Socket.IO instance, passing it our server
var socket = io.listen(server);

// Add a connect listener
socket.on('connection', function(client){ 
    console.log('Connection to client established');

    // Success!  Now listen to messages to be received
    client.on('message',function(event){ 
        console.log('Received message from client!',event);
    });

    client.on('disconnect',function(){
        clearInterval(interval);
        console.log('Server has disconnected');
    });
});

console.log('Server running at http://127.0.0.1:' + port + '/');

启动服务器可以正常工作,在我的浏览器中运行http://localhost:8080也可以正常工作,并按预期返回"Hello Socket Lover".但我想让另一个页面与套接字对话,而不是从 node 运行一个.js.

但当我运行它时,什么都没有发生,Chrome控制台返回:

Failed to load resource            http://undefined/socket.io/1/?t=1333119551736
Failed to load resource            http://undefined/socket.io/1/?t=1333119551735

我已经干了一整天了.有什么帮助吗?

推荐答案

你试过装插座了吗.io脚本不是来自相对URL吗?

您正在使用:

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

以及:

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

你应该试试:

<script src="http://localhost:8080/socket.io/socket.io.js"></script>

以及:

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

使用适合当前设置的任何选项切换localhost:8080.

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

Node.js相关问答推荐

try 使用Puppeteer抓取Twitter时数组空

在导入时未找到Pupeteer-PAGE-Proxy包

使用Node.js中的";类型";:";模块";不导入文件

Node.js分页返回空数组

数据未被中间件解析

为什么 nginx 不将我的 react index.html 作为后备服务

Nodejs 从链接数组中获取数据并保存到 mongodb

express 和 mongoose 的新密码不正确

登录用户并获取他们的个人资料

为什么 $or 在带有正则表达式的mongoose 中不能正常工作

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

MERN 堆栈项目中的 React [create-react-app] 正在提供依赖项

node_modules 中 .bin 文件夹的用途是什么?

Aptana Studio 是否有 NodeJS 插件?

如果我使用像 express 这样的 node 服务器,是否需要 webpack-dev-server

Nodejs续集批量更新

Node应用程序中相同npm包的两个版本

如何从 find 方法返回 Mongoose 结果?

如何设置 useMongoClient (Mongoose 4.11.0)?

mongoose 填充与对象嵌套