组合具有不同初始设置的两个节点服务器的功能
combining functionality of two Node servers with different initial set up
我有两个节点服务器,我需要将它们组合在一起,以便一台服务器具有两者的功能。它们的设置略有不同,我不确定如何解决。
第一个服务器在顶部有require语句,在中间有路由,在底部创建服务器,如下所示:
var express = require('express');
var routes = require('./routes');
etc..
// middleware
// routes
http.createServer(app, function(req, res){
// get files
// check for errors
}).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
第二个看起来像这样:
var express = require('express')
, app = express()
, server = app.listen(80)
, io = require('socket.io').listen(server)
, fs = require('fs')
var arr= [];
app.get('/aRoute', function(req, res) {
res.writeHead(200);
var data = {
// parse query string
};
arr.push(data);
io.sockets.emit('update', data);
res.end("OK");
});
app.get('/someOutput', function(req, res) {
res.writeHead(200);
res.end(JSON.stringify(footData));
});
io.sockets.on('connection', function (socket) {
});
我剪切了粘贴的一部分,所以现在第一个服务器脚本看起来(大致(像这样。
// All imports
var express = require('express');
var routes = require('./routes');
var mongoose = require('mongoose');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var fs = require('fs');
var multer = require('multer');
var connect = require('connect');
var methodOverride = require('method-override');
var io = require('socket.io');
// middleware
// routes
// trying to make this a route
var arr= [];
app.get('/aRoute', function(req, res) {
res.writeHead(200);
var data = {
// parse query string
};
arr.push(data);
io.sockets.emit('update', data);
res.end("OK");
});
app.get('/someOutput', function(req, res) {
res.writeHead(200);
res.end(JSON.stringify(footData));
});
// THIS GIVES ME ERRORS RIGHT HERE
io.sockets.on('connection', function (socket) {
});
http.createServer(app, function(req, res){
// get files
// check for errors
}).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
合并这两个脚本会导致下面列出的行中列出的错误。
io.sockets.on('connection', function (socket) {
^
TypeError: Cannot call method 'on' of undefined:
// THIS GIVES ME ERRORS RIGHT HERE
io.sockets.on('connection', function (socket) {
});
我不明白为什么在更改两个require语句并将服务器创建和侦听服务器底部后出现此错误。有谁知道我该如何解决这个问题?
您需要 socket.io,它具有.listen
方法,而不是.on
方法。调用 .listen
后,您将返回一个具有您尝试使用.on
方法的对象。
io = require('socket.io').listen(server);
(您还缺少server
,这是在第二个脚本中通过调用express().listen(somePortNumberLike80)
创建的
您不能只是复制和粘贴代码并期望它工作,真的。
相关文章:
- 查找与锁定和更新调度相关的一个或两个节点模块
- 是否有任何功能可以合并两个JSON数据集并替换旧信息?(节点.JS)
- 在节点中,使用Q,使两个函数并行工作,但只等待第一个函数实现其承诺
- 如何通过在两个节点之间拖放来制作边缘,并在细胞空间中扩展 egdehandle 扩展.js
- Socket.io 在两个节点.js应用之间触发事件
- 通过 HTTP 在两个节点.js服务器之间传输文件
- Socket.io 两个节点应用程序
- 合并两个节点列表而不重复
- 组合具有不同初始设置的两个节点服务器的功能
- D3:对两个节点之间的圆进行动画处理
- d3:计算两个节点之间的线的中点,画一条从它到一个新节点成90度角的线
- 如何在Cytoscape JS中添加两个节点之间的多个偏移边
- 函数,用于比较DOM树中的两个节点文本
- 从强制布局中删除两个节点失败,而一个成功
- 使用不同的端口同时运行两个节点应用程序
- 如何在CYTOSCAPE JS中突出显示两个节点之间的路径
- 是否有一种简单的方法在JQuery中执行两个节点集之间的减法
- jquery DOM两个节点之间的距离
- 如何比较alfresco javascript中的两个节点
- 合并两个节点.具有相似属性的json文件(合并两个具有相似属性的json文件)