【问题标题】:How to use socket.io to handle requests?如何使用 socket.io 处理请求?
【发布时间】:2016-10-25 08:21:44
【问题描述】:

我正在尝试使用 socket.io 处理我得到的 html 页面和 http 服务器之间的请求 Cannot POST / [HTTP/1.1 404 Not Found 1ms] 服务器代码:

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
console.log(__dirname);
app.use(express.static(__dirname+'/public'));
app.get('/', function(req, res){
  res.sendfile(__dirname+'/public/registration.html');
});

io.on('connection', function(socket){

    socket.on('registration',function(msg){
    console.log('user data'+ msg);
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

html页面如下

<html>
  <head>
      <script src="https://cdn.socket.io/socket.io-1.3.4.js">
            var socket = io('http://localhost');
            console.log(socket);
            socket.emit('registration',"test");
      </script>

  </head>
  <body>

【问题讨论】:

  • 您的错误Cannot POST / [HTTP/1.1 404 Not Found 1ms] 暗示了表单提交或 POST ajax 调用,您都不会在客户端显示任何内容。因此,该错误来自您未显示的某些代码。如果不查看导致该特定错误的代码/HTML,我们将无法为您提供帮助。

标签: html node.js socket.io httprequest


【解决方案1】:
  1. 安装节点,
  2. 为您的应用创建一个文件夹,
  3. 创建 package.json 文件:

    { "name": "socket.io-test", "version": "0.0.1", "private": true, "scripts": { "start": "node server" }, "dependencies": { "express": "~4.13.1", "socket.io": "^1.4.6" } }

  4. 运行npm install

  5. 创建 server.js - 你的原始代码粘贴在这里:

    var express = require('express');
    var app = express();
    var http = require('http').Server(app);
    var io = require('socket.io')(http);
    console.log(__dirname);
    app.use(express.static(__dirname+'/public'));
    app.get('/', function(req, res){
      res.sendfile(__dirname+'/public/registration.html');
    });
    io.on('connection', function(socket){
        socket.on('registration',function(msg){
        console.log('user data'+ msg);
      });
    });
    
    http.listen(3000, function(){
      console.log('listening on *:3000');
    });
    
  6. 在您的工作目录中创建/public 文件夹,

  7. 创建/public/registration.html 文件:

    <html> <head> <script src='/socket.io/socket.io.js'></script> <script> var socket = io('http://localhost:3000'); socket.on('connect', function() { socket.emit('registration',"test"); document.getElementById('socket').innerHTML='connected'; }); </script> </head> <body> <h1>Testing socket.io with nodejs</h1> <h3 id="socket"></h3> </body> </html>

  8. node servernpm start启动服务器,

  9. 在浏览器中转到localhost:3000

会有用的

【讨论】:

  • @Mohammed 您能否详细说明您的代码“不起作用”的原因?你期待什么,实际发生了什么?如果您遇到异常/错误,请发布它发生的行和异常/错误详细信息。请在原始问题中编辑这些详细信息,否则我们可能无法提供帮助。
猜你喜欢
  • 1970-01-01
  • 2016-08-09
  • 2016-03-06
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
相关资源
最近更新 更多