NodeJS和Websockets

时间:2017-06-09 16:35:11

标签: javascript node.js sockets websocket

今天是我第一次使用NodeJS,更特别是Socket.io。我开发了一个带有PHP框架的网站,并希望添加通知和聊天功能。我正在关注Socket.io网站上的tutorial,试图让它适应我的需求,但我有几个问题。

  • 首先,我看到他们正在创建一个HTTP服务器。我想要的是网站继续像往常一样工作,这意味着HTTP请求以相同的方式处理,但最重要的是我希望在加载页面时创建websocket。而不是

    var http = require('http').Server(app);
    http.listen(3000, function(){ console.log('listening on *:3000'); });
    

我们可以创建一个websocket服务器并使用WS协议吗?我在网上看过几个图书馆,但我想知道是否有标准版或更好的方法。

  • 另一件事是我找不到服务器端Socket.io脚本的正确路径。因此无法建立连接。从我在网上看到,它应该看起来像 DOMAIN / socket.io:3000 。现在我迷路了,因为这是我第一次使用Node:在哪里可以找到服务器上的“socket.io”文件?在我的项目文件夹中,我看到的只是一个 node_modules 文件夹(它包含一个 socket.io 文件夹,但我不知道如何使用它。)

请注意,即使我没有机会建立连接,我在服务器上运行的脚本也没有任何错误

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

http.listen(3000, function(){
    console.log('listening on *:3000');
});

io.on('connection', function(socket){
    console.log('a user connected');
});

以下是客户端的当前代码:

var socket = io('<?php echo base_url(); ?>:3000, {path: "/sockets/socket.io"}');

1 个答案:

答案 0 :(得分:0)

NodeJS是一个网络服务器。与PHP不同,您可以在一台服务器的不同端口上运行多个服务器。所以这创建了一个网络服务器:

var app = require('express')();
var http = require('http').Server(app);

http.get("/",(req,res)=>res.write("Hello World"));

http.listen(3000, function(){
console.log('listening on *:3000');
});

这是套接字:

var io = require('socket.io')(http);
io.on('connection', function(socket){
console.log('a user connected');
});

请注意,Socket.io需要一个Web服务器来进行握手,因此需要额外的http服务器。但是,您不需要使用此服务器来提供页面,因此您可以这样做:

var io = require("socket.io")(8000);//creates a webserver on port 8000, no need to do more with the pure http server
io.on('connection', function(socket){
console.log('a user connected');
});

与PHP不同,您不需要嵌入脚本,您可以导入它们:

var so=require("socket.io");//works if socket.io is installed in modules