3

客户端错误是:

GET http://localhost:8888/socket.io/1/?t=1342788870007 404 (Not Found)socket.io.js:1632

Socket.handshake socket.io.js:1632
Socket.connect socket.io.js:1671
Socket socket.io.js:1530
io.connect socket.io.js:91

(匿名函数)

我的客户js:

var socket = new io.connect("http://localhost", 8888);

socket.on("chatRoom", function(data){
  $("#log").html($("#log").html() + "<br>" + data);
})

$("#chatform").submit(function (event) {
  event.preventDefault();
  socket.emit('chatRoom', $("#chat").val())
})

我的服务器是:

var express = require('../node_modules/express'),
app = express.createServer(),
io = require('../node_modules/socket.io').listen(app),
fs = require('fs');

app.use(express.bodyParser());

 var port = 8888;

 // get html page ok
app.get('/html/*', function (req, res) {
    res.sendfile(__dirname + '/html/' + req.params[0]);
});

// chat
io.sockets.on('connection', function (socket) {
  socket.on("login", function(message){
    socket.emit('chatRoom', "sombody connect");
  })

  socket.on("chatRoom", function(data){
      socket.emit('chatRoom',"from server");
  })
})

app.listen(port);

谁能告诉我出了什么问题?我在服务器中使用 express+socket.io,在客户端中使用 socket.io.js 服务器和客户端都在本地主机中

4

2 回答 2

0

这是您的问题(在服务器端代码中):

app.listen(port);

您需要创建一个单独的 HTTP 服务器:

...
var app    = express();
var server = require('http').createServer(app);
var io     = require('../node_modules/socket.io').listen(server);
...
server.listen(port);
于 2013-09-15T10:34:48.527 回答
0

正如@ebohlman 提到的

尝试使用

var socket = io.connect('http://localhost:8888');

在您的客户端 js 中,而不是

var socket = new io.connect("http://localhost", 8888);
于 2013-09-15T07:34:40.587 回答