今天是我第一次使用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协议吗?我在网上看过几个图书馆,但我想知道是否有标准版或更好的方法。
请注意,即使我没有机会建立连接,我在服务器上运行的脚本也没有任何错误
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"}');
答案 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