Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Can';无法从http模块创建套接字服务器_Node.js_Sockets - Fatal编程技术网

Node.js Can';无法从http模块创建套接字服务器

Node.js Can';无法从http模块创建套接字服务器,node.js,sockets,Node.js,Sockets,我想像socket.io一样创建套接字服务器,因为socket.io不能与Corona SDK一起工作。所以我需要自定义套接字服务器。我使用net模块创建了socket服务器,效果良好。但是我需要使用http模块,因为我编写了restapi。我尝试从http模块创建示例套接字服务器,但出现错误 var net=require('net'); var HOST='localhost'; var端口=9999; var server=require('http')。createServer(函数(请

我想像socket.io一样创建套接字服务器,因为socket.io不能与Corona SDK一起工作。所以我需要自定义套接字服务器。我使用
net
模块创建了socket服务器,效果良好。但是我需要使用
http
模块,因为我编写了restapi。我尝试从
http
模块创建示例套接字服务器,但出现错误

var net=require('net');
var HOST='localhost';
var端口=9999;
var server=require('http')。createServer(函数(请求、响应){
response.end('Hello from server');
});
server.on('connection',函数(socket){
socket.on('data',函数(data){
data=data.toString('utf-8');
控制台日志(数据);
write('Hello from server');
});
socket.on('error',函数(error){
console.log(错误);
});
});
监听(端口、主机);
var client=new net.Socket();
client.connect(端口、主机、函数(){
log('连接到:'+主机+':'+端口);
客户。写(‘我是查克·诺里斯!’);
});
client.on('data',函数(data){
console.log('数据:'+数据);
client.destroy();
});
client.on('close',function()){
console.log(“连接关闭”);
});
如果运行此脚本,则会出现错误:

连接到:localhost:9999
我是查克·诺里斯!
错误:此套接字已关闭
在套接字上写入(net.js:692:19)
在套接字上写入(net.js:743:8)
在doWrite(_stream_writable.js:329:12)
在writeOrBuffer(_stream_writeable.js:315:5)
在Socket.Writable.write(_stream_Writable.js:241:11)
at Socket.write(net.js:670:40)
在插座上。(/var/work/projects/edorium/Server/test/test.js:49:16)
在emitOne(events.js:101:20)
在Socket.emit(events.js:191:7)
在readableAddChunk(_stream_readable.js:178:18)
{错误:解析错误
在SockeTonda(_http_server.js:411:20)
在emitOne(events.js:101:20)
在Socket.emit(events.js:191:7)
在readableAddChunk(_stream_readable.js:178:18)
在Socket.Readable.push(_stream_Readable.js:136:10)
在TCP.onread(net.js:560:20)bytesParsed:0处,代码:“HPE\u INVALID\u METHOD”}
连接关闭
为什么会发生这种情况,如何解决

补充回答

我在请求中添加了HTTP头,一切正常

代码示例如下:

var http=require('http');
var net=要求的(‘净额’);
var express=需要(“express”);
var HOST='localhost';
var端口=9999;
var-app=express();
var server=http.server(app);
app.get('/',函数(req,res){
res.send('Hello World!fff');
});
监听(端口、主机);
server.on('connection',函数(socket){
socket.on('data',函数(data){
data=data.toString('utf-8');
控制台日志(数据);
write('Hello from server');
});
socket.on('error',函数(error){
console.log(错误);
});
socket.on('end',function(){
log('Socket end');
});
});
//客户
var client=new net.Socket();
client.connect(端口、主机、函数(){
log('连接到:'+主机+':'+端口);
var messagae=“”+
“得到/”+
'主机:localhost:9999'+
'内容类型:文本/普通;字符集=windows-1251'+
'内容长度:6'+
'连接:保持活动状态;'+
“你好!”;
客户。编写(messagae);
});
client.on('data',函数(data){
console.log('数据:'+数据);
});
client.on('close',function()){
console.log(“连接关闭”);
});
由于您已显式创建HTTP服务器,因此此服务器需要HTTP请求。但你只是发送“我是Chuck Norris!”这绝对不是HTTP请求。因此,服务器会关闭连接

要发送HTTP请求,您可以使用。或者,您可以自己研究并构建一个适当的HTTP请求

由于您已显式创建HTTP服务器,因此此服务器需要HTTP请求。但你只是发送“我是Chuck Norris!”这绝对不是HTTP请求。因此,服务器会关闭连接


要发送HTTP请求,您可以使用。或者,您可以自己研究并构建一个正确的HTTP请求。

您的客户端已断开连接

var net = require('net');
var HOST = 'localhost';
var PORT = 9999;


var server = net.createServer(function(socket) {
    socket.write('Echo server\r\n');
    socket.on('data', function(data){
    console.log(data);
    textChunk = data.toString('utf8');
    console.log(textChunk);
    socket.write("================");
    });
});
server.listen(PORT, '127.0.0.1');

server.listen(PORT, HOST);

var client = new net.Socket();
client.connect(PORT, HOST, function() {
console.log('CONNECTED TO: ' + HOST + ':' + PORT);

client.write('I am Chuck Norris!');
});
var i = 0;
client.on('data', function(data) {
console.log('Received: ' + data);
i++;
if(i==2)
    client.destroy();  
} );
client.on('close', function() {
console.log('Connection closed'); 
});

你的客户被切断了连接

var net = require('net');
var HOST = 'localhost';
var PORT = 9999;


var server = net.createServer(function(socket) {
    socket.write('Echo server\r\n');
    socket.on('data', function(data){
    console.log(data);
    textChunk = data.toString('utf8');
    console.log(textChunk);
    socket.write("================");
    });
});
server.listen(PORT, '127.0.0.1');

server.listen(PORT, HOST);

var client = new net.Socket();
client.connect(PORT, HOST, function() {
console.log('CONNECTED TO: ' + HOST + ':' + PORT);

client.write('I am Chuck Norris!');
});
var i = 0;
client.on('data', function(data) {
console.log('Received: ' + data);
i++;
if(i==2)
    client.destroy();  
} );
client.on('close', function() {
console.log('Connection closed'); 
});

你能告诉我在哪里可以找到node.js错误描述,比如HPE_INVALID_EOF吗_STATE@MetalEvolutionStudio:我不知道这些代码是否有明确的文档。我只是在谷歌上搜索了更多信息。你能告诉我在哪里可以找到node.js错误描述,比如HPE_INVALID_EOF吗_STATE@MetalEvolutionStudio:我不知道这些代码是否有明确的文档。我只是在谷歌上搜索以获取更多信息。