使用node.js的Socket.io完全没有表达?

时间:2016-12-16 01:32:17

标签: javascript node.js express socket.io server

所以我想使用socket.io创建一个node.js服务器,但我更像是一个初学者,并且发现快速包在语法上相当混乱。我知道我应该学习如何使用express和app.js,但是在我达到了只包含http,js和socket.io包的node.js的功能范围之后,我计划这样做。我在网上看了将近一个小时,没有任何帮助我的问题。我在socket.io上遇到的主要问题是在客户端,函数io();不管用。我甚至尝试将body标签上方脚本链接的路径重定向到我的服务器项目目录中的文件,但是刚刚返回错误,说明了require();不是一个功能。我在这个文本墙下包含了我正在使用的一些文件(但不是全部)。如果格式不正确或其他不正确,请原谅我,因为这是我第一次使用堆栈交换来提问。出于这个原因,如果您有足够的声誉来编辑它以使其更适合您在此处遵循的格式,请执行此操作。

首先,我的服务器文件:

Context

现在,我的主要html文件:

const http = require('http');
const fs = require('fs');
const io = require('socket.io')(http);

function socketReq(soc){
    soc.emit("test", {"user":"test", "text":"testing da socket"});
}

io.on("connection", socketReq);

function server(req,res){
    console.log('A user tried to connect to mazeserver.localtunnel.me'+req.url)
    if(req.url == '/'){
        console.log('Sending html...');
        res.writeHead(200, {"Context-Type":"text/html"});
        fs.createReadStream('./index.html').pipe(res);
    }else if(req.url == '/pong.js'){
        console.log('Sending JS...');
        res.writeHead(200, {"Context-Type":"text/JavaScript"});
        fs.createReadStream('./pong.js').pipe(res);
    }else {
        console.log('Error 404: file .'+req.url+' not found');
        res.writeHead(404, {"Context-Type":"text/html"});
        fs.createReadStream('./404.html').pipe(res);
    }
}

http.createServer(server).listen(1337);
console.log('Server created');

如果需要更多文件,请告诉我应该包含哪些文件,尽管我假设问题出现在这两个文件中。提前谢谢,

-Maze

1 个答案:

答案 0 :(得分:4)

确保您通过npm安装了socket.io并且还具有socket.io客户端。您肯定可以在CDN上使用socket.io客户端:

<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>

对于服务器端,socket.io应该引导app实例而不是http。 E.g:

var http = require('http');
var socket = require('socket.io');
function server()...
app = http.createServer(server);
io = socket(app);
app.listen(80);

默认情况下,它们使用端口80,因此在客户端,它们只是指向像var socket = io('http://localhost');这样的localhost。如果要使用其他端口,则必须更改io客户端实例化。

var socket = io('http://localhost:1337')