2016-10-25 73 views
0

我试图使用socket.io处理HTML页面和我的HTTP服务器之间的请求无法发布/[HTTP/1.1 404未找到毫秒] 服务器代码:如何使用socket.io来处理请求?

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

您的错误'不能POST/[HTTP/1.1 404 Not Found 1ms]'暗示表单提交或POST ajax调用,这两者都不会在客户端显示任何内容。所以这个错误来自你没有显示的代码。没有看到哪些代码/ HTML导致了这个特定的错误,我们无法帮助您。 – jfriend00

回答

0
  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

It将工作

+0

我已经尝试过,但它不起作用 – Mohammed

+0

@Mohammed你能详细说明你的代码“不起作用”吗?你在期待什么,究竟发生了什么?如果您遇到异常/错误,请发布其发生的行和异常/错误的详细信息。请修改您的原始问题的这些详细信息,否则我们可能无法提供帮助。 – FrankerZ