为什么'连接'永远不会被触发?

时间:2017-06-30 00:56:16

标签: node.js socket.io

在另一个终端上, $ curl localhost:3001

但是,在nodejs服务器端, 我从没看见过 <{p}} "sdfsdf"

console.log("sdfsdf");

问题

1有些专家可以解释原因吗?

2如何修复它以便连接&#39;回调是否被触发?

谢谢。

var express = require('express'),
http = require('http')

var app = express();
var server = http.createServer(app);
//var server = http.Server(app);

//server.listen(app.get('port'), function () {
server.listen(3001, function () {
    //logger.info('openHAB-cloud: express server listening on port ' + app.get('port'));
    console.log("3001");
});

app.get('/', function(req, res){
  //res.sendfile('index.html');
  res.send("xxx");
});

io = require('socket.io').listen(server);

io.on('connection', function(socket) {
    console.log("sdfsdf");
});

2 个答案:

答案 0 :(得分:0)

要连接到socket.io服务器,您必须使用socket.io客户端 - 您不能只使用常规curl或http请求。

socket.io客户端必须专门设计为连接到socket.io服务器。这意味着它在webSocket之上使用socket.io消息格式,它遵循socket.io和webSocket用于连接的正确约定。

以下是一些客户端示例:https://socket.io/docs/client-api/

可以从包含相应socket.io库的浏览器Javascript或使用来自其他Javascript环境的任何socket.io客户端库进行连接。

要了解webSocket连接(socket.io使用的连接),您可能需要阅读:How does WebSockets server architecture work?。然后,socket.io在webSockets上添加自己的消息层。

答案 1 :(得分:0)

const io = require('socket.io-client');

const socket = io('http://localhost:3001');